我正试图编写一个程序,使用json对象进行通信,但遇到了自定义类的问题。基本上就是我进入的物体json.dumps文件是一个很大的字典,大部分只使用基本类(字符串、列表和其他字典),但在某些情况下,我必须将字符串映射到自定义类a的对象
当我使用这些对象时,会得到如下信息:
TypeError: <module.A object at 0x01659110> is not JSON serializable
我想做的是为类型a的对象编写一个默认的编码方法。这些对象非常简单,只包含一个标签(str类型)和一些不同的整数。标签足以唯一地标识一个对象,因此如果json单独使用标签,就可以了。你知道吗
在网上阅读了许多类似的问题后,我最终得到了:
class AEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, A):
return o.label
else:
return super(AEncoder, self).default(o)
问题是,我从所有人那里得到的信息包括:
AEncoder().encode(object)
在将对象传递到json.dumps文件(),但我事先没有访问该对象的权限。它藏在前面提到的那本大字典里,有时我找不到。我也尝试过实现A的__repr__
函数,但得到了相同的错误。你知道吗
所以。。。尝试摘要版本:当我无法访问传递到json.dumps()
的特定对象时,如何告诉json.dumps()
如何处理自定义类?你知道吗
如果需要澄清,请告诉我。你知道吗
将
cls
参数传递给dump函数:下面是一个用法示例:
相关问题 更多 >
编程相关推荐