所以我有一些python dict要序列化为JSON
{'someproperty': 0, 'anotherproperty': 'value', 'propertyobject': SomeObject(someproperty=0, anotherproperty=0)}
但是json.dumps
抛出一个TypeError: SomeObject(someproperty=0, anotherproperty=0) is not JSON serializable
那么如何正确地序列化python dict呢?
问题是,python不知道如何表示
SomeObject
您可以创建这样的回退:
Python只能序列化内置数据类型的对象。 在您的例子中,“SomeObject”是Python无法序列化的用户定义类型。如果尝试序列化任何不可json序列化的数据类型,则会得到TypeError“TypeError:is not json serializable”。因此,应该有一个中间步骤,将这些非内置数据类型转换为Python内置的可序列化数据结构(list、dict、number和string)。
因此,让我们将SomeObject转换为python字典,因为字典是表示对象的最简单方法(因为它有键/值对)。你可以把所有的SomeObject实例属性复制到一个新的字典中,然后就可以设置了! myDict=self.\uu dict\uu.copy() 现在,这个myDict可以成为“propertyobject”的值。
在此步骤之后,将字典转换为字符串(JSON格式,但可以是YAML、XML、CSV…)-对于我们来说,它将是jsonObj=JSON.dumps(finalDict)
最后一步是将jsonObj字符串写入磁盘上的文件!
相关问题 更多 >
编程相关推荐