gpt4 book ai didi

python - 如何在 python 中使用 json 将包含用户定义类的字典转储为值?

转载 作者:行者123 更新时间:2023-12-01 08:42:14 26 4
gpt4 key购买 nike

我有一个Python字典signature2GroupLength2UserDefinedClassDict。第一级键是字符串。第二级键是整数,值是用户定义类的类型。如何在 python 中使用 json 转储并稍后读取该字典?

虽然我已经定义了用户定义的类,如下所示:

#########################################################################
class UserDefinedClass(JSONEncoder):
def default(self, o):
return o.__dict__

def __init__(self, field1, field2, field3):
self.field1 = field1
self.field2 = field2
self.field3 = field3
#########################################################################

我还是明白

TypeError: Object of type 'UserDefinedClass' is not JSON serializable

当我打电话时

print(json.dumps(signature2Length2ProbDict))

最佳答案

由于特定的 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"}}}

关于python - 如何在 python 中使用 json 将包含用户定义类的字典转储为值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com