Из-за определенной JSONEncoder.__init__
подписи и
json.dumps
подписи (которую необходимо передать с аргументом ключевого слова cls=
, чтобы использовать пользовательский подкласс JSONEncoder
), вам не следует объединять пользовательский класс пользователя и пользовательскийКодер JSON.
Пусть работают / живут отдельно:
import json
from json import JSONEncoder
class UserDefinedClass:
def __init__(self, field1, field2, field3):
self.field1 = field1
self.field2 = field2
self.field3 = field3
class CustomEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
signature2Length2ProbDict = {'a': {1: UserDefinedClass(*['one', 'two', 'three'])},
'b': {2: UserDefinedClass(*['four', 'five', 'six'])}}
print(json.dumps(signature2Length2ProbDict, cls=CustomEncoder))
Вывод:
{"a": {"1": {"field1": "one", "field2": "two", "field3": "three"}}, "b": {"2": {"field1": "four", "field2": "five", "field3": "six"}}}