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

一个对象的django序列化程序

  •  13
  • khelll  · 技术社区  · 15 年前

    我正试图找出一种方法将一些django模型对象序列化为json格式,比如:

    j = Job.objects.get(pk=1)
    ##############################################
    #a way to get the JSON for that j variable???
    ##############################################
    

    我不想:

    from django.core import serializers
    serializers.serialize('json', Job.objects.get(pk=1),ensure_ascii=False)
    

    因为它返回的是json数组,而不是单个对象表示。

    有什么想法吗?

    我想到的一个方法是:找到一种方法来获取对象的散列(属性、值),然后使用simplejson来获取它的json表示,但是我不知道如何获取散列。

    2 回复  |  直到 7 年前
        1
  •  26
  •   istruble kalyan    15 年前

    把你从serializers.serialize中得到的信息进行处理怎么样?从结果的前面和后面修剪方括号并不难。

    job = Job.objects.get(pk=1)
    array_result = serializers.serialize('json', [job], ensure_ascii=False)
    just_object_result = array_result[1:-1]
    

    不是一个花哨的答案,但它只会给你一个json符号的对象。

        2
  •  6
  •   Pavel Daynyak    9 年前

    我建议你用Django的 model_to_dict . 如果我没弄错, serializers.serialize() 也依赖于它,但它只适用于 list , 不是单个模型实例 . 你就这样得到一个 dict 在单个模型中使用模型字段的实例:

    from django.forms.models import model_to_dict
    
    # assuming obj is your model instance
    dict_obj = model_to_dict( obj )
    

    你现在只需要一条直线 json.dumps 呼叫:

    import json
    json.dumps(dict_obj)