我试图用Pymongo,Mongodb和Django创建一个JSON结果。我创建了一个Django视图,该视图包含一个pymongo查询并希望以json的形式返回结果。然而,结果产生arent有效json(根据jsonlint)Pymongo&Django查询无效JSON
这是我的django视图。
from django.http import HttpResponse
import pymongo
from datetime import datetime, timedelta
import json
from bson import json_util
#setup database connection
try:
conn = pymongo.Connection()
db = conn.mydatabase
except:
print('Error: Unable to connect to database.')
conn = None
def querypeople(request):
result = db.people.find({}).sort('name')
json_docs = []
for doc in result:
json_doc = json.dumps(doc, default=json_util.default, sort_keys=True, indent=4)
json_docs.append(json_doc)
return HttpResponse(json_docs, content_type='application/json')
它产生这个输出。 (注意在每个文档和[]之间缺少逗号应该包含整个结果。这使得JSON无效。)我在做什么错了?
“_id”:{ “$ OID”: “50c596ab2b9afbbc85ed202a” }, “DATE_ADDED”:{ “$日期”:1355126443473 }, “名”: “阿尔夫·兰登” } { “_id”:{ “$ OID”: “50c5b9d92b9afbc3f1e7c90c” }, “公司”: “可儿家族”, “DATE_ADDED”:{ “$日期”:1355135449179 }, “名”:“ Andrew Lumsden“, ”title“:”合作伙伴“
这些是以某种方式序列化的两个步骤。你在每个列表元素上使用json.dumps。我是否正确地假设你所需的json应该是这样的:{“obj”:[{“_id”:{“$ oid”:“12323”},“date_added”:{“$ date”:1355126443473} name“:”Al Landon“} {”_id“:{”$ oid“:”50c5b9d92b9afbc3f1e7c90c“},”company“:”Corrs“,”date_added“:{”$ date“:1355135449179},”name“ “Andrew Lumsden”,“title”:“A Partner”}]} –
这是正确的,这就是我所期望的json应该看起来如此 – CraigH