Pymongo& Django查询无效的JSON

时间:2013-01-09 11:38:23

标签: python django mongodb pymongo

我试图用Pymongo,Mongodb和Django创建一个JSON结果。我创建了一个包含pymongo查询的Django视图,并希望在json中返回结果。但是,产生的结果是无效的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”:1355126443473       },       “名字”:“Al Landon”   } {       “_ID”: {           “$ oid”:“50c5b9d92b9afbc3f1e7c90c”       },       “公司”:“科尔斯”,       “添加日期”: {           “$ date”:1355135449179       },       “名字”:“安德鲁·拉姆斯登”,       “标题”:“合作伙伴”

1 个答案:

答案 0 :(得分:0)

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

json_docs = json.dumps(list(result), default=json_util.default, sort_keys=True, indent=4)