我如何JSON序列化Python字典?
我正在尝试为JSON序列化一些东西,并在HttpResponse
对象中返回它。
def json_response(something): data = serializers.serialize("json", something) return HttpResponse(data)
我正在使用它:
return json_response({ howdy : True })
但是我得到这个错误:
"bool" object has no attribute "_meta"
有任何想法吗?
编辑:这是回溯:
http://dpaste.com/38786/
更新:Python现在有它自己的json处理程序,只需使用import json
而不是使用simplejson
。
Django序列化模块被devise用来序列化Django的ORM对象。 如果你想编码一个常规的Python字典,你应该使用simplejson,它随Django一起提供,以防你已经安装了。
import json def json_response(something): return HttpResponse(json.dumps(something))
我build议使用应用程序/ javascript Content-Type标题(也可以使用application / json,但是这会阻止您在浏览器中debugging)发回:
import json def json_response(something): return HttpResponse( json.dumps(something), content_type = 'application/javascript; charset=utf8' )
如何扩展HttpResponse的JsonResponse 类 :
from django.http import HttpResponse from django.utils import simplejson class JsonResponse(HttpResponse): def __init__(self, data): content = simplejson.dumps(data, indent=2, ensure_ascii=False) super(JsonResponse, self).__init__(content=content, mimetype='application/json; charset=utf8')
在python 2.6和更高版本中,有一个不错的JSON库 ,其中有许多函数,其中json.dumps()将对象序列化为一个string。
所以你可以做这样的事情:
import json print json.dumps({'howdy' : True })
使用较新版本的Django,您可以使用由django.http提供的JsonResponse:
from django.http import JsonResponse def my_view(request): json_object = {'howdy': True} return JsonResponse(json_object)
您可以在官方文档中find更多详细信息。
import json my_list = range(1,10) # a list from 1 to 10 with open('theJsonFile.json', 'w') as file_descriptor: json.dump(my_list, file_descriptor) #dump not dumps, dumps = dump-string