все 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Сообщить о неточности