如何快速将查询结果集转储到JSON中?

时间:2011-01-12 04:44:26

标签: javascript python django json

import simplejson as json
results = Content.objects.filter(blah)
theresult_json = json.dumps(results)

这不起作用!!

3 个答案:

答案 0 :(得分:6)

http://docs.djangoproject.com/en/dev/topics/serialization/

怎么样?

from django.core import serializers
data = serializers.serialize('json', SomeModel.objects.all())

# it's pretty useful and quick.
data = serializers.serialize('json', SomeModel.objects.all(), fields=('foo','bar'))

答案 1 :(得分:1)

results是一个python对象。 simplejson.dumps仅适用于python dict的/ list's。

您需要先将结果对象转换为dict。要么像这样手动完成:

l = [] 

for result in results:
    d = {
        'attr1': result.attr1,
        'attr2': result.attr2,
        ...
    }
    l.append(d)

theresult_json = simplejson.dumps(l)

或动态使用对象__dict__方法,之后从中删除非JSON可序列化属性:

l = [] 

for result in results:
    d = result.__dict__
    # remove attributes from dict which are not JSON-serializable with del d[key]
    l.append(d)

theresult_json = simplejson.dumps(l)

答案 2 :(得分:0)

根据您要执行的操作,您可能还需要查看Piston。它有特殊的Emitter类,用于将对象转储为JSON格式,XML格式等...如果您正在构建AJAX或API端点,活塞框架非常有用。