最近在使用Django做简单的web时,需要ajax发送异步请求,返回的数据为json格式的。
但是需要将类似于自定义类转换为json,遇到了一些麻烦,这里先给出一些简单的代码
import json
class Person(object):
def __init__(self, name='', age=0, gender='男'):
self.name = name
self.age = age
self.gender = gender
persons = [Person('John', 18, '男'), Person('Alice', 16, '女'), Person('小明', 17, '男')]
jsons = json.dumps(persons)
上述序列化会出现错误TypeError: Object of type 'Person' is not JSON serializable
这是因为Person对象不能序列化,原因可以查看原文链接
解决方法是自定义Person的序列化方式,即
def obj_2_json(obj):
return {
"name": obj.name,
"age": obj.age,
"gender": obj.gender
}
jsons = json.dumps(persons, default=obj_2_json)