我如何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' ) 

如何扩展HttpResponseJsonResponse

 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