Python Glossary English

все Python 3jsonпонятие

json.JSONEncoder

классы

Класс-кодер объектов Python → JSON; для сериализации нестандартных типов переопределяют метод default. json.dumps использует его внутри.

Синтаксис

json.JSONEncoder().encode(obj)

На практике свой кодер редко создают вручную — подкласс передают как json.dumps(obj, cls=MyEncoder). Метод default вызывается только для значений, которые кодер не осилил сам, и обязан вернуть уже сериализуемый объект (словарь, список, строку), а не готовый JSON-текст; для всего по-прежнему чужого нужно вызвать super().default(o), чтобы получить честный TypeError. Заодно помни: кортежи превратятся в массивы, а нестроковые ключи словаря будут приведены к строкам.

Примеры

import json
print(json.JSONEncoder().encode([1, 2]))   # → [1, 2]
print(json.JSONEncoder().encode({'a': 1, 'b': None}))   # → {"a": 1, "b": null}
print(json.JSONEncoder(sort_keys=True).encode({'b': 2, 'a': 1}))   # → {"a": 1, "b": 2}
print(json.JSONEncoder().encode(range(3)))   # → TypeError
print(json.JSONEncoder(default=str).encode(range(3)))   # → "range(0, 3)"

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности