原创:https://blog.youkuaiyun.com/yubo_725/article/details/79856607
将一个对象数组转为json字符串,使用json.dumps()方法,比如下面的对象:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return json.dumps({
'name': self.name,
'age': self.age
})
print Person('zhangsan', 26)
但是执行代码时报错如下:
TypeError: ('zhangsan', 26) is not JSON serializable
经查阅资料,发现复杂对象在转为json字符串的时候,需要重写对象的__repr__
方法,并修改json.dumps()方法的参数,具体代码如下:
import json
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return json.dumps({
'name': self.name,
'age': self.age
})
def __repr__(self):
return repr((self.name, self.age))
print json.dumps(Person('zhangsan', 26), default=lambda o: o.__dict__, sort_keys=True)
修改后执行代码,得到正确的结果:
{"age": 26, "name": "zhangsan"}