无法使用json.dumps()序列化嵌套python对象

无法使用json.dumps()序列化嵌套python对象,json,python-3.x,Json,Python 3.x,我是python新手,对于这些天真的问题我感到非常抱歉。我有一个简单的代码snipper,我尝试使用json.dumps()将python对象序列化到字典 当我运行上面的代码时,我得到以下输出 {"requestSource": "unittest"} 但是,这不是预期的,因为它还应该序列化“文档”对象列表。感谢你的回答。提前谢谢 您对ASSMSchema的类定义定义了类成员文档和请求源。这些属性不是此类的单个实例的属性,而是在所有实例之间共享的属性。运

我是python新手,对于这些天真的问题我感到非常抱歉。我有一个简单的代码snipper,我尝试使用json.dumps()将python对象序列化到字典

当我运行上面的代码时,我得到以下输出

{"requestSource": "unittest"}

但是,这不是预期的,因为它还应该序列化“文档”对象列表。感谢你的回答。提前谢谢

您对
ASSMSchema
的类定义定义了类成员
文档
请求源
。这些属性不是此类的单个实例的属性,而是在所有实例之间共享的属性。运行
myObj.requestSource=“unittest”
时,您正在实例
myObj
上定义一个成员变量。这个成员实际上反映在
json.dumps
的输出中,而类成员(如
文档
)则不是

如需进一步阅读,请参阅

根据程序的复杂性和所需的可维护性,有多种方法来归档所需的行为。首先,您必须修复两个类定义中的错误。要使用实例变量而不是类变量定义类,请执行以下操作:

Foo类:
#类变量在这里
定义初始化(self,field1,field2):
#在编写Foo(field1,field2)时调用此方法
#这些是实例变量
self.field1=field1
self.field2=field2
如果您想将这个类作为JSON转储,只需使用
\uuuu dict\uuuu
的技巧:
print(JSON.dumps(Foo(1,2)。\uuuu dict\uuuu))
将输出类似
{“field1”:1,“field2”:2}

在您的例子中,有
文档
成员,默认情况下它不是JSON序列化的。因此,您也必须单独处理此问题。您可以为您的
ASSMSchema
编写一个编码器(有关更多信息,请参阅)。大致可以这样实现:

从json导入JSONEncoder
类ASSMSCHEMA编码器(JSONECODER):
def默认值(自身,o):
返回{
“请求源”:o.requestSource,
#将文档对象列表转换为dict列表
“文件”:[d.uu dict_uuu代表o.文件中的d]
}

现在,在序列化
ASSMSchema
的实例时,将使用此实现,并将
documents
成员替换为词典列表(可由默认编码器序列化)。请注意,在调用
json.dumps
时必须指定此编码器,请参阅上面的链接线程。

感谢您的响应!关于如何修改代码以获得所需输出的任何建议?答案现在应该已经包含了您需要的所有内容,进一步的资源已链接,如果您想阅读更多内容,这将对您有所帮助。再次感谢!这对我很有用,谢谢你的帮助。
{"requestSource": "unittest"}