gpt4 book ai didi

python - 如何找出对象无法 JSON 序列化的原因?

转载 作者:行者123 更新时间:2023-11-30 23:19:13 24 4
gpt4 key购买 nike

我有一个非常简单的数据用例,我希望将其序列化为 JSON,但我总是被错误 TypeError: <api.tests.MemberInfo object at 0x02B26210> is not JSON serializable 绊倒。

这是我想要序列化的对象 -

class MemberInfo:
def __init__(self, member_code):
self.memberCode = member_code

在 Python shell 中 -

>>> mi = MemberInfo('123')
>>> json.JSONEncoder().default(mi)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "c:\Python34\lib\json\encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")

如何找出原因?

最佳答案

问题是 json 序列化器不知道如何序列化类,这就是它停止工作的原因。

如果您仅使用基本类型将类转换为包含所有属性及其值的字典,则可以毫无问题地序列化它。以下是其工作原理的示例:

import json
from decimal import Decimal

class MemberInfo:
def __init__(self, member_code):
self.memberCode = member_code

def to_dict(self):
return dict(memberCode=self.memberCode)

instance = MemberInfo('123123')

try:
# This will break since classes cannot be serialized
json.dumps(instance)
except TypeError as e:
print 'CLASS ERROR: %s' % e.message

# This will also break since it has a class Decimal
instance = dict(memberCode=Decimal(123123))
try:
# This will break since classes cannot be serialized
json.dumps(instance)
except TypeError as e:
print 'CLASS ERROR: %s' % e.message


# This will work since there aren't any classes and all keys are simple types
instance = MemberInfo('123123').to_dict()

print 'This will return a valid result'
print json.dumps(instance)

关于python - 如何找出对象无法 JSON 序列化的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184745/

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