Python複雜物件轉json字串
將一個物件陣列轉為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"}