Курс 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"
- Область видимости переменных
- Поток данных в Python
- Преобразование в float
- Управление импортом в Python
- EMOT преобразование эмодзи в текст
- JMESPath в Python
- Оператор assert в Python
- Особенности множеств в Python
- Работа с массивами в Numpy
- Запуск асинхронной корутины
- Замыкания в Python
- Асинхронное программирование с asyncio
- Порядок операций в Python
- Подписка на @SelectelNews
- Работа с defaultdictами в Python
- Генераторы списков в Python
- Динамические маршруты во Flask
- Избегайте пустого списка
- Описание скриптов в README
- Установка и обучение ChatterBot
- F-строки в Python
- Частичное совпадение ввода
- Перебор элементов списка в Python
- Курсы Яндекс Практикум
- Объединение списков с помощью zip
- Форматирование строк в Python
- Замена текста с помощью sub
- Модуль antigravity: генерация координат
- Форматирование строк в Python
- Работа с модулем glob в Python
- GitHub в Telegram: подписка на уведомления
- Изменения в обработке логических значений
- Глобальные переменные в Python
- Декораторы в Python
- Декораторы в Python
- Работа с итераторами в Python
- Удаление элементов во время итерации
- Список переменных в Python
- Упрощенный вывод данных в Python
- Преобразование типов данных в set comprehension
- Группировка элементов в словарь
- Структура данных deque в Python
- Работа с кортежами в Python
- Создание пользовательской коллекции в Python
- Метод enumerate() в Python
- Оформление кода по PEP 8
- Транспонирование 2D-массива с помощью zip
- Преобразование вложенного списка
- Рекурсия для обращения строки















