如何将Python dict序列化为JSON

2024-05-15 00:54:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一些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呢?


Tags: json序列化isvaluenotdictdumpsserializable
2条回答

问题是,python不知道如何表示SomeObject

您可以创建这样的回退:

import json

def dumper(obj):
    try:
        return obj.toJSON()
    except:
        return obj.__dict__

obj = {'someproperty': 0, 'anotherproperty': 'value', 'propertyobject': SomeObject(someproperty=0, anotherproperty=0)}

print json.dumps(obj, default=dumper, indent=2)

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字符串写入磁盘上的文件!

相关问题 更多 >

    热门问题