1

我试图用 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" }, "date_added": { "$date": 1355126443473 }, "name": "Al Landon" }{ "_id": { "$oid": "50c5b9d92b9afbc3f1e7c90c " }, "company": "Corrs", "date_added": { "$date": 1355135449179 }, "name": "Andrew Lumsden", "title": "A Partner"

4

1 回答 1

0

据我了解,您返回的是响应列表,而不是 json 字符串。尝试:

json_docs = json.dumps(list(result), default=json_util.default, sort_keys=True, indent=4)
于 2013-01-09T15:26:06.497 回答