Python复杂对象转JSON

Posted qiumingcheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python复杂对象转JSON相关的知识,希望对你有一定的参考价值。

Python复杂对象转JSON
在Python对于简单的对象转json还是比较简单的,如下:

import json

d = ‘a‘: ‘aaa‘, ‘b‘: [‘b1‘, ‘b2‘, ‘b3‘], ‘c‘: 100
json_str = json.dumps(d)
print json_str
1
2
3
4
5
对于复杂对象,可以使用下面的方法来实现,比如:

import json

class Customer:
def __init__(self, name, grade, age, home, office):
self.name = name
self.grade = grade
self.age = age
self.address = Address(home, office)
def __repr__(self):
return repr((self.name, self.grade, self.age, self.address.home, self.address.office))

class Address:
def __init__(self, home, office):
self.home = home
self.office = office
def __repr__(self):
return repr((self.name, self.grade, self.age))

customers = [
Customer(‘john‘, ‘A‘, 15, ‘111‘, ‘aaa‘),
Customer(‘jane‘, ‘B‘, 12, ‘222‘, ‘bbb‘),
Customer(‘dave‘, ‘B‘, 10, ‘333‘, ‘ccc‘),
]

json_str = json.dumps(customers, default=lambda o: o.__dict__, sort_keys=True, indent=4)
print json_str
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
结果如下

[

"address":
"home": "111",
"office": "aaa"
,
"age": 15,
"grade": "A",
"name": "john"
,

"address":
"home": "222",
"office": "bbb"
,
"age": 12,
"grade": "B",
"name": "jane"
,

"address":
"home": "333",
"office": "ccc"
,
"age": 10,
"grade": "B",
"name": "dave"

]

以上是关于Python复杂对象转JSON的主要内容,如果未能解决你的问题,请参考以下文章

漂亮的打印 JSON python

python中的JSON

marshmallow: 简化Python对象系列化

复杂对象转数组。多层嵌套,递归实现

gson字符串 复杂对象 互转 请用 gson

保洁阿姨看完都会了!java复杂对象转json