如何快速将查询结果导出为JSON?

2 投票
3 回答
2211 浏览
提问于 2025-04-16 09:48
import simplejson as json
results = Content.objects.filter(blah)
theresult_json = json.dumps(results)

这不管用!!

3 个回答

0

根据你想做的事情,你可能还想看看 Piston。这个工具有一些特别的“发射器”类,可以把你的对象转换成JSON格式、XML格式等等。如果你在做AJAX或者API接口,Piston框架会非常有用。

1

results 是一个 Python 对象。simplejson.dumps 只能处理 Python 的字典(dict)和列表(list)。

你需要先把你的结果对象转换成字典。你可以手动这样做:

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)
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'))

撰写回答