json — Кодер и декодер JSON

Модуль json обеспечивает кодирование Python-объектов в строки JSON и декодирование JSON-строк в Python-объекты.

import json

Кодирование (Python → JSON)

import json

data = {
    "name": "Алиса",
    "age": 30,
    "languages": ["Python", "JavaScript"],
    "active": True,
    "address": None
}

# Преобразование в JSON-строку
json_str = json.dumps(data, ensure_ascii=False)

# Красивый вывод
json_pretty = json.dumps(data, indent=2, ensure_ascii=False)
print(json_pretty)

# Запись в файл
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

# Сортировка ключей
json.dumps(data, sort_keys=True, ensure_ascii=False)

Декодирование (JSON → Python)

import json

json_str = '{"name": "Алиса", "age": 30, "active": true}'

# Парсинг JSON-строки
data = json.loads(json_str)
print(data['name'])   # Алиса
print(type(data))     # <class 'dict'>

# Чтение из файла
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

Соответствие типов

JSON Python
object {} dict
array [] list
string "" str
number (целое) int
number (дробное) float
true/false True/False
null None

Пользовательская сериализация

import json
from datetime import datetime

class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.isoformat()
        return super().default(obj)

data = {"created": datetime.now()}
json.dumps(data, cls=DateTimeEncoder)
# '{"created": "2024-01-15T10:30:00"}'

# Быстрый способ через default
json.dumps(data, default=str)

Частые ошибки

Официальная документация

json — JSON encoder and decoder

Полный справочник API (API Reference)

Важные функции

Функция Описание
json.dumps(obj, *, ensure_ascii=True, indent=None) Сериализует obj в JSON-строку.
json.dump(obj, fp, *, ensure_ascii=True, indent=None) Сериализует obj в JSON и записывает в файл fp.
json.loads(s, *, object_hook=None) Десериализует строку (или байты) s в объект Python.
json.load(fp, *, object_hook=None) Десериализует JSON из файла fp в объект Python.

Классы

Класс Описание
json.JSONEncoder Расширяемый кодировщик JSON (можно наследоваться).
json.JSONDecoder Декодировщик JSON.