代码之家  ›  专栏  ›  技术社区  ›  Adarsha

如何JSON序列化Python字典?

  •  37
  • Adarsha  · 技术社区  · 5 年前

    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/

    5 回复  |  直到 15 年前
        1
  •  72
  •   Andrew Peters    9 年前

    更新:Python现在有自己的json处理程序,只需使用 import json simplejson


    Django serializers模块设计用于序列化Django ORM对象。如果您想对常规Python字典进行编码,应该使用simplejson,Django附带simplejson,以防您尚未安装它。

    import json
    
    def json_response(something):
        return HttpResponse(json.dumps(something))
    

    import json
    
    def json_response(something):
        return HttpResponse(
            json.dumps(something),
            content_type = 'application/javascript; charset=utf8'
        )
    
        2
  •  34
  •   Filippo Vitale    15 年前

    那一个呢 JsonResponse 延伸 HttpResponse

    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')
    
        3
  •  13
  •   Dmitrii Mikhailov    8 年前

    对于较新版本的Django,您只需使用Django.http提供的JsonResponse即可:

    from django.http import JsonResponse
    
    def my_view(request):
        json_object = {'howdy': True}
        return JsonResponse(json_object)
    

    official docs .

        4
  •  5
  •   Salvador Dali    11 年前

    在Python2.6及更高版本中,有一个很好的 JSON library ,具有多种功能,其中 json.dumps()

    所以你可以这样做:

    import json
    print json.dumps({'howdy' : True })
    
        5
  •  1
  •   Waqas    10 年前
    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