все Python 3jsonпонятие
json.JSONDecoder
классы
Класс-декодер JSON → объекты Python; позволяет настроить разбор (напр. хук объектов). json.loads использует его внутри.
Синтаксис
json.JSONDecoder().decode(s)
Для разового разбора класс не нужен — loads принимает те же object_hook, parse_float и прочие настройки и сам создаёт декодер под капотом. Держать экземпляр стоит ради raw_decode(s): он разбирает первое JSON-значение и возвращает пару (объект, индекс конца), поэтому им можно пройтись по строке с несколькими документами подряд, где обычный loads падает с Extra data.
Примеры
import json
print(json.JSONDecoder().decode('[1, 2]')) # → [1, 2]
print(json.JSONDecoder().decode('{"a": 1, "b": null}')) # → {'a': 1, 'b': None}
print(json.JSONDecoder(object_hook=lambda d: sum(d.values())).decode('{"a": 1, "b": 2}')) # → 3
print(json.JSONDecoder().raw_decode('[1, 2] tail')) # → ([1, 2], 6)
print(json.JSONDecoder().decode('{oops}')) # → JSONDecodeError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности