Обычный способ JSON-сериализации пользовательских несериализуемых объектов заключается в подклассе json.JSONEncoder
, а затем передает пользовательский кодер в дампы.
Обычно это выглядит так:
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, foo):
return obj.to_json()
return json.JSONEncoder.default(self, obj)
print json.dumps(obj, cls = CustomEncoder)
То, что я пытаюсь сделать, состоит в том, чтобы сделать что-то сериализуемое с помощью кодировщика по умолчанию. Я огляделся, но ничего не мог найти.
Я думал, что будет какое-то поле, в котором кодер будет искать json-кодировку. Нечто похожее на __str__
. Возможно, поле __json__
.
Есть что-то подобное в python?
Я хочу сделать один класс модуля, который я делаю, чтобы быть JSON-сериализуемым для всех, кто использует пакет, не беспокоясь о том, чтобы реализовать свои собственные [тривиальные] пользовательские кодеры.