如何快速将查询结果导出为JSON?
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'))