Курс Python → JSON в Python: модуль, dump, dumps, load

Что такое JSON

JSON, или JavaScript Object Notation, — это как записная книжка для данных, только цифровая. Легковесный формат, который читается без головной боли. Появился он в начале 2000-х, чтобы программы могли обмениваться информацией, не ломая голову над сложными структурами. JSON любят за простоту: пара ключ-значение, и всё, никаких лишних заморочек.

Где его используют? Да везде: API, настройки приложений, конфигурационные файлы. Он как универсальный переводчик для данных. Главное — структура: объекты (это как словарь с парами ключ-значение) и массивы (списки, где всё по порядку). Хотите передать данные с сайта на сервер? JSON справится.

  • Легковесный и понятный даже новичку
  • Поддерживает объекты и массивы
  • Работает с любым языком программирования

Кстати, если вы маркетолог, JSON пригодится, чтобы настроить аналитику или API. А научиться работать с данными можно на курсах Marketello. Заходите на marketello.org, там всё просто и без лишней теории.

JSON в Python модуль json

Python без JSON — как кофе без чашки. Встроенный модуль json — это ваш лучший друг, когда нужно превратить данные в JSON или обратно. Он стандартный, ничего качать не надо, просто импортируйте и работайте. Основные функции? Их четыре: dump, dumps, load, loads. Две для записи, две для чтения.

  • dump — сохраняет JSON в файл
  • dumps — делает JSON-строку
  • load — читает JSON из файла
  • loads — парсит JSON-строку

Для маркетологов, которые хотят автоматизировать отчёты, модуль json — находка. На курсе «Google Sheets» от Marketello научат, как интегрировать данные с JSON. Проверено в Москве, Киеве, Алматы!

Функция json.dumps для сериализации

Функция json.dumps() — это как волшебная палочка, превращающая Python-объекты в JSON-строку. Хотите словарь, список или число отправить через API? Это ваш инструмент. Она берёт объект (obj) и выдаёт строку, готовую к передаче. Но у неё куча параметров, чтобы всё настроить под себя.

Начнём с indent. Это для красоты: добавляет отступы, и JSON выглядит как аккуратный список, а не каша. Параметр separators задаёт разделители: запятая для элементов, двоеточие для ключей. sort_keys упорядочивает ключи в словаре — удобно для отладки. А ensure_ascii? Если отключить (False), кириллица в JSON останется читаемой.

  • indent — форматирует JSON с отступами
  • sort_keys — сортирует ключи словаря
  • ensure_ascii — управляет кодировкой символов

Есть ещё skipkeys (игнорирует несериализуемые ключи), default (для обработки сложных объектов) и cls (кастомный JSONEncoder). Пример? Вот словарь в JSON-строку:


import json
data = {"name": "Иван", "age": 30}
result = json.dumps(data, ensure_ascii=False)
print(result)  # {"name": "Иван", "age": 30}

А с indent=2 будет красиво:


result = json.dumps(data, ensure_ascii=False, indent=2)
print(result)
# {
#   "name": "Иван",
#   "age": 30
# }

Хотите освоить такие штуки для работы с данными? Курсы Marketello по автоматизации в Google Sheets помогут. Заходите на marketello.org, там всё объяснят.

Примеры использования json.dumps

json.dumps() — это как нож в хозяйстве: режет всё, от списков до словарей. Давайте разберём, как она работает с разными данными. Берём простой словарь:


import json
data = {"city": "Москва", "active": True, "count": 42, "info": None}
result = json.dumps(data, ensure_ascii=False)
print(result)  # {"city": "Москва", "active": true, "count": 42, "info": null}

А теперь с форматированием и кириллицей:


result = json.dumps(data, ensure_ascii=False, indent=2)
print(result)
# {
#   "city": "Москва",
#   "active": true,
#   "count": 42,
#   "info": null
# }

Список? Легко:


data = ["Москва", "Киев", 123, False]
result = json.dumps(data, ensure_ascii=False, indent=2)
print(result)
# [
#   "Москва",
#   "Киев",
#   123,
#   false
# ]

Параметр sort_keys упорядочит ключи:

  • Без sort_keys: ключи в случайном порядке
  • С sort_keys=True: всегда по алфавиту

Для маркетологов, работающих с API или отчётами, это спасение. На курсе «Интернет-маркетинг» от Marketello научат, как применять JSON в реальных задачах. Зарегистрируйтесь на marketello.org!

Таблица соответствия типов Python и JSON

Чтобы не запутаться, как Python-данные превращаются в JSON, вот таблица:

Python JSON
dict object
list, tuple array
str string
int, float number
bool (True, False) true, false
None null

Просто, правда? Зная это, разберётесь с данными за минуту. А на курсах Marketello покажут, как применять JSON в аналитике.

Обработка несериализуемых объектов

JSON не любит сложные объекты, типа datetime или ваших классов. Пробуете json.dumps() — и бац, TypeError. Что делать? Есть два выхода: параметр default или кастомный JSONEncoder через cls.

Пример с datetime:


import json
from datetime import datetime
data = {"time": datetime.now()}
def convert(o):
    if isinstance(o, datetime):
        return o.isoformat()
    raise TypeError
result = json.dumps(data, default=convert)
print(result)

Или используйте JSONEncoder:

  • Создайте класс, наследующий JSONEncoder
  • Переопределите метод default для обработки типов

Эти навыки — must-have для работы с API. На курсе «Google Sheets» от Marketello научат автоматизировать такие задачи. Пишите через форму на marketello.org!

Отличия json.dumps от json.dump

json.dumps() и json.dump() — как близнецы, но с разным характером. Первая выдаёт строку, вторая пишет прямо в файл. Хотите отправить данные по сети? Используйте json.dumps(). Нужно сохранить на диск? json.dump() в помощь.

Пример: dumps даёт строку, которую можно передать в API, а dump сразу записывает в файл, экономя время. Для маркетологов, работающих с отчётами, это удобно. Курсы Marketello в Москве и Киеве научат, как применять обе функции.

Декодирование JSON json.loads

json.loads() — это обратная сторона медали. Берёт JSON-строку и делает из неё Python-объект. Например, получили ответ от API? loads разберёт его на словарь или список.

Пример:


import json
json_string = '{"name": "Анна", "age": 25}'
data = json.loads(json_string)
print(data["name"])  # Анна

Параметры? object_hook позволяет кастомизировать десериализацию, parse_float и parse_int — управлять числами. Это пригодится для аналитики.

  • object_hook — для обработки сложных объектов
  • parse_float — задаёт тип для дробных чисел

Хотите научиться парсить данные для отчётов? Курсы Marketello по Google Sheets ждут вас на marketello.org.

Распространенные ошибки и решения

Работа с json.dumps() — не всегда гладко. TypeError из-за неподдерживаемых типов? Используйте default или JSONEncoder, как выше. Проблемы с кириллицей? Поставьте ensure_ascii=False. Ключи не строки? JSON их не примет, конвертируйте в str.

  • TypeError — проверьте типы данных
  • Кириллица ломается — ensure_ascii=False
  • JSONDecodeError — проверьте формат строки

Эти ошибки — классика для новичков. На курсах Marketello по автоматизации научат их обходить. Заходите на marketello.org, оставляйте заявку!

JSON в реальных приложениях

json.dumps() — не просто код, а рабочая лошадка. Логируете данные? Формируете ответ API? Сохраняете настройки пользователя? JSON везде. Например, в маркетинге: отправляете данные в CRM или формируете отчёт для клиента. Всё это — json.dumps().

Хотите автоматизировать рутину? Курсы Marketello по интернет-маркетингу и Google Sheets научат, как использовать JSON на практике. Зарегистрируйтесь на marketello.org, и вперёд, к данным без головной боли!

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Область видимости переменных
  2. Поток данных в Python
  3. Преобразование в float
  4. Управление импортом в Python
  5. EMOT преобразование эмодзи в текст
  6. JMESPath в Python
  7. Оператор assert в Python
  8. Особенности множеств в Python
  9. Работа с массивами в Numpy
  10. Запуск асинхронной корутины
  11. Замыкания в Python
  12. Асинхронное программирование с asyncio
  13. Порядок операций в Python
  14. Подписка на @SelectelNews
  15. Работа с defaultdictами в Python
  16. Генераторы списков в Python
  17. Динамические маршруты во Flask
  18. Избегайте пустого списка
  19. Описание скриптов в README
  20. Установка и обучение ChatterBot
  21. F-строки в Python
  22. Частичное совпадение ввода
  23. Перебор элементов списка в Python
  24. Курсы Яндекс Практикум
  25. Объединение списков с помощью zip
  26. Форматирование строк в Python
  27. Замена текста с помощью sub
  28. Модуль antigravity: генерация координат
  29. Форматирование строк в Python
  30. Работа с модулем glob в Python
  31. GitHub в Telegram: подписка на уведомления
  32. Изменения в обработке логических значений
  33. Глобальные переменные в Python
  34. Декораторы в Python
  35. Декораторы в Python
  36. Работа с итераторами в Python
  37. Удаление элементов во время итерации
  38. Список переменных в Python
  39. Упрощенный вывод данных в Python
  40. Преобразование типов данных в set comprehension
  41. Группировка элементов в словарь
  42. Структура данных deque в Python
  43. Работа с кортежами в Python
  44. Создание пользовательской коллекции в Python
  45. Метод enumerate() в Python
  46. Оформление кода по PEP 8
  47. Транспонирование 2D-массива с помощью zip
  48. Преобразование вложенного списка
  49. Рекурсия для обращения строки

Marketello читают маркетологи из крутых компаний