有关python对象类型转换为json数据的方法,在在django的model中,直接将数据转换为json为报错,可以使用pythonic中lambda方式来转换为json数据。
python中有专门的函数负责数据类型转换,对象类型转换json数据有点像数组转json一样了。
python对象类型转换json数据:
在Django的model中,直接查询出来的orm对象,想直接转成json会报错:
TypeError is not JSON serializable
代码:
def convert_to_builtin_type(obj):
# print 'default(', repr(obj), ')'
# Convert objects to a dictionary of btheir representation
d = { '__class__':obj.__class__.__name__,
'__module__':obj.__module__,
}
d.update(obj.__dict__)
return d
然后,在函数中调用:
ip = Ip.objects.filter(ip=ip)
context = {'ip': list(ip)}
return HttpResponse(json.dumps(context, ensure_ascii=False, indent=4, default=convert_to_builtin_type))
如上先filter出ip=ip的条目保存在ip变量中,然后格式化下保存在context变量中。调用时放在default中。
使用pythonic,可以用lambda方式搞定:
return HttpResponse(json.dumps(context, ensure_ascii=False, indent=4, default=lambda o: o.__dict__))