Глава 22 · Веб-разработка с Python

JSON: формат обмена данными

Распространённый текстовый формат для структурированных данных, который понимают программы на разных языках.

JSON (JavaScript Object Notation) — текстовый формат для передачи структурированных данных между программами. Название напоминает про JavaScript, но JSON давно используется программами на любых языках, включая Python, — это просто текстовый формат, а не код, который где-то выполняется.

Значение JSONСоответствие в Python
объект {{"ключ": значение}}dict
массив [1, 2, 3]list
строка "текст"str
число 42 / 3.14int / float
true / falseTrue / False
nullNone
JSON — не то же самое, что запись словаря Python
У JSON строгий синтаксис: ключи и строковые значения обязаны быть в двойных кавычках. {{'name': 'Ada'}} — это распечатка словаря Python, а не JSON: в корректном JSON она выглядит как {{"name": "Ada"}}. Одинарные кавычки, True с большой буквы, завершающая запятая перед закрывающей скобкой — всё это ломает JSON, даже если выглядит почти правильно.

Модуль json — стандартная библиотека Python

json_primer.py
import json

zadacha = {{"title": "Купить хлеб", "done": False}}

# Python -> текст JSON
tekst = json.dumps(zadacha, ensure_ascii=False)
print(tekst)   # {{"title": "Купить хлеб", "done": false}}

# текст JSON -> Python
obratno = json.loads(tekst)
print(obratno["title"])   # Купить хлеб
ensure_ascii=False — чтобы кириллица оставалась кириллицей
По умолчанию json.dumps() заменяет все не-ASCII символы на escape-последовательности вроде \u041a — валидный, но нечитаемый для человека JSON. ensure_ascii=False оставляет кириллицу как есть; результат остаётся тем же самым JSON, просто удобным для чтения.

Ограничения формата JSON

У формата нет отдельного типа для даты и времени — их обычно передают строкой в оговорённом формате (например, "2026-08-23") и разбирают уже на своей стороне. Нет и типа для двоичных данных (изображение, файл) — их обычно кодируют в текст (например, Base64) или передают отдельным запросом. А ещё JSON не различает целые и вещественные числа так строго, как Python: очень большие или очень точные числа при передаче между разными языками программирования иногда требуют аккуратности.

JSON — формат данных, а не база данных и не API сам по себе
JSON описывает, как записать данные в виде текста. Он не хранит данные постоянно сам по себе (для этого нужна база данных — раздел 22.20) и не является программным интерфейсом сам по себе (для этого нужен код, который его обрабатывает — пример такого кода есть в разделе 22.16). JSON — распространённый текстовый формат обмена данными между разными частями системы.
Практика: преобразование данных между Python и JSON
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →