2010-03-06 67 views
11

我试图想出一个办法来序列一些Django的模型对象JSON格式,是这样的:Django的序列化一个对象

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表示,但是我不知道如何获得那个散列。

回答

22

刚刚按序从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表示法中的对象。

+0

为我工作。谢谢 – khelll 2010-03-10 16:08:10

4

我会建议使用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) 
+0

该死的,那正是我一直在寻找的。 – Broccoli 2016-11-26 12:39:13