0Pricing
Python Academy · Урок

Кодирование и декодирование JSON

Используйте json.loads, json.dumps и json.load/dump для ввода-вывода JSON.

«Кодирование и декодирование JSON» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Модуль json в Python преобразует объекты Python в строки или файлы JSON и обратно с помощью простых согласованных функций.

json.dumps()

json.dumps(obj) сериализует объект Python в строку JSON. indent=2 выводит её в удобном для чтения виде.
import json
d = {'name': 'Alice', 'age': 30, 'active': True}
print(json.dumps(d, indent=2))

json.loads()

json.loads(s) разбирает строку JSON и преобразует её в объект Python. Объекты JSON становятся словарями, а массивы — списками.
import json
s = '{"name": "Alice", "scores": [90, 85]}'
data = json.loads(s)
print(type(data), data['name'])

json.dump() в файл

json.dump(obj, file_object) сериализует объект непосредственно в файл. Сначала сохранять строку отдельно не нужно.
import json, tempfile, os
tmp = tempfile.mktemp(suffix='.json')
with open(tmp, 'w') as f:
    json.dump({'x': 1}, f, indent=2)
print(open(tmp).read())
os.unlink(tmp)

json.load() из файла

json.load(file_object) разбирает JSON непосредственно из открытого файлового объекта.
import json, io
buf = io.StringIO('{"key": "value"}')
data = json.load(buf)
print(data)

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

JSON object→dict. array→list. string→str. number→int/float. true/false→True/False. null→None.
import json
s = '[1, "two", true, null, {"a": 3.14}]'
print(json.loads(s))

Несериализуемые типы

datetime, set и bytes нельзя сериализовать в JSON. Передайте функцию default= или создайте подкласс JSONEncoder.
import json
from datetime import datetime
def default(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError(f'{type(obj)} not serializable')
print(json.dumps({'ts': datetime.now()}, default=default))

sort_keys и separators

sort_keys=True сортирует ключи словаря. separators=(',', ':') удаляет пробелы для компактного вывода.
import json
d = {'z': 3, 'a': 1, 'm': 2}
print(json.dumps(d, sort_keys=True, separators=(',', ':')))

Форматированный вывод

json.dumps(obj, indent=4, ensure_ascii=False) создаёт удобный для чтения JSON с сохранением символов Unicode.
import json
d = {'name': 'Mehmet', 'city': 'Istanbul'}
print(json.dumps(d, indent=4, ensure_ascii=False))

JSONDecodeError

json.loads(invalid) вызывает json.JSONDecodeError. При разборе пользовательского ввода всегда используйте try/except.
import json
try:
    json.loads('{bad json}')
except json.JSONDecodeError as e:
    print(f'Parse error: {e}')

Обновление JSON-файлов

Прочитать → изменить → записать обратно — стандартный шаблон обновления файла конфигурации JSON.
import json, io
buf = io.StringIO('{"count": 5}')
data = json.load(buf)
data['count'] += 1
print(json.dumps(data))

Быстрая проверка

Какая функция разбирает строку JSON и преобразует её в объект Python?

Итоги

json.dumps/loads используются для строк, json.dump/load — для файлов. Типы: object→dict, array→list, null→None. Пользовательская сериализация выполняется с помощью функции default=.

Продолжайте

Так держать! Переходите к следующему уроку.

Часто задаваемые вопросы

Урок «Кодирование и декодирование JSON» бесплатный?

Да — полный текст урока «Кодирование и декодирование JSON» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Кодирование и декодирование JSON»?

Используйте json.loads, json.dumps и json.load/dump для ввода-вывода JSON. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Кодирование и декодирование JSON»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Кодирование и декодирование JSON
  2. Работа с вложенными структурами JSON
  3. Чтение CSV с помощью csv.reader
  4. Запись CSV с помощью csv.DictWriter
← Назад к Python Academy