Запрос Pymongo & Django недействителен JSON

Я пытаюсь создать результат JSON с Pymongo, Mongodb и Django. Я создал представление Django, содержащее запрос pymongo и хочу вернуть результаты в json. Тем не менее, полученные результаты arent valid 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": {           msgstr "" "       },       "Дата Добавлена": {           "$ date": 1355126443473       },       «имя»: «Аль Ландон»   } {       "_Я бы": {           msgstr "" "       },       «компания»: «Коррс»,       "Дата Добавлена": {           "$ date": 1355135449179       },       «имя»: «Эндрю Ламсден»,       «title»: «Партнер»

1
добавлено отредактировано
Просмотры: 2
nl ja de
это как-то два этапа сериализации. вы используете 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»: «Партнер»}]}
добавлено автор Milla Well, источник
это правильно, вот как должен выглядеть мой желаемый json
добавлено автор CraigH, источник
это правильно, вот как должен выглядеть мой желаемый json
добавлено автор CraigH, источник

2 ответы

Как я понял, вы возвращаетесь с ответом, а не с json string. Пытаться:

json_docs = json.dumps(list(result), default=json_util.default, sort_keys=True, indent=4)
0
добавлено
это работало идеально для меня. благодаря
добавлено автор CraigH, источник

Как я понял, вы возвращаетесь с ответом, а не с json string. Пытаться:

json_docs = json.dumps(list(result), default=json_util.default, sort_keys=True, indent=4)
0
добавлено
это работало идеально для меня. благодаря
добавлено автор CraigH, источник