python对象类型转为json数据怎么实现?

发布时间:2020-05-12编辑:脚本学堂
有关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__))