Курс 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. Сравнение def и lambda в Python
  2. Проверка однородности элементов списка
  3. Метод setdefault() в Python
  4. Работа с изображениями PIL
  5. Классы данных в Python
  6. Работа с комплексными числами
  7. Транспонирование матрицы в Python
  8. Конвертация коллекций в Python.
  9. Аннотации типов в Python
  10. Просмотр атрибутов и методов класса
  11. Метод getitem для доступа к элементам последовательности
  12. Инверсия списков и строк в Python
  13. Работа с массивами в Numpy
  14. Ускорение кода с помощью векторизации
  15. Использование функции product
  16. Строковое представление объектов
  17. Работа со строками в Python
  18. Отслеживание прогресса с tqdm
  19. Извлечение аудио из видео
  20. Поиск кода
  21. Динамическая типизация в Python
  22. Объединение, распаковка и деструктуризация
  23. Введение в Python
  24. Локальные переменные.
  25. Сортировка с помощью key
  26. Особенности ключей словаря в Python
  27. Lambda-функция в Python: использование с map() и sum()
  28. Оптимизация интернирования строк
  29. Декоратор Ajax required
  30. Ключевое слово global в Python
  31. Управление контекстом выполнения
  32. Оператор break в Python
  33. Цикл for в Python
  34. Antigravity модуль
  35. Работа с срезами в Python
  36. Работа с геоданными с помощью geopy
  37. Создание даты из строки ISO
  38. Методы работы со строками в Python
  39. Декораторы классов
  40. Сравнение def и lambda функций в Python
  41. Удаление элементов из списка в Python
  42. Печать в одной строке
  43. Python defaultdict добавление ключа
  44. Замеры производительности в Python

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