【发布时间】:2013-01-09 11:38:23
【问题描述】:
我正在尝试使用 Pymongo、Mongodb 和 Django 创建 JSON 结果。我创建了一个包含 pymongo 查询并希望以 json 格式返回结果的 Django 视图。但是,生成的结果不是有效的 json(根据 jsonlint)
这是我的 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” }, “添加日期”: { “$日期”:1355126443473 }, “名称”:“阿尔兰登” }{ “_ID”: { “$oid”:“50c5b9d92b9afbc3f1e7c90c” }, “公司”:“Corrs”, “添加日期”: { “$日期”:1355135449179 }, “名称”:“安德鲁·拉姆斯登”, "title": "合伙人"
【问题讨论】:
-
这些在某种程度上是序列化的两个步骤。您在每个列表元素上使用 json.dumps。我是否正确假设,您想要的 json 应该如下所示: {"obj": [{"_id": {"$oid": "12323"},"date_added": {"$date": 1355126443473},"名称”:“Al Landon”},{“_id”:{“$oid”:“50c5b9d92b9afbc3f1e7c90c”},“公司”:“Corrs”,“date_added”:{“$date”:1355135449179},“名称”: "Andrew Lumsden","title": "合伙人"}]}
-
没错,这就是我想要的 json 的样子
标签: python django mongodb pymongo