我希望Flask返回一个列表的词典,其中每个词典都有以下结构:
{'category': 'Spas/beauty/personal care', 'location': [48.84014, 2.26351], 'id': '161608194188848', 'zip': 'Tel:0777034152', 'state': '', '_id': ObjectId('57a9a8582daf236574089796'), 'street': '166 avenue de Versailles', 'category_list': [{'name': 'Aesthetics', 'id': '146053955462002'}], 'name': 'The bar à sourcils', 'city': 'Paris', 'country': 'France'}
我尝试了很多方法,我遇到的主要错误信息是:
'dict' object has no attribute 'serialize'
:当我尝试序列化列表中的词典时。ObjectId(...) is not JSON serializable
:当我尝试使用JSONIFY或json.dumps()时。这是烧瓶代码:
@app.route('/getme', methods=['POST'])
def receiveData():
curPos = request.json # curPos = {'lat': , 'lng': }
client = MongoClient()
db = client.places
fbplacesCollection = db.fbplaces
query = {'location': {'$geoWithin': {'$center': [[curPos['lat'], curPos['lng']], 0.089992801]}}}
result = list(fbplacesCollection.find(query))
return ' ' # I want to send the list called result
这是Ajax / Jquery代码:
$.ajax({
method: "POST",
url: "getme",
contentType:"application/json",
dataType:"json",
data: JSON.stringify(toSend)
})
.done(function( msg ) {
// do s.th with the received msg
console.log(msg);
});
任何帮助将不胜感激。
答案 0 :(得分:0)
我找到了解决方案:
将以下内容添加到烧瓶代码中:
from bson.json_util import dumps
...
dumps(result)
return (result)
注意:由于MongoDB将文档存储在 BSON 文件中, json.dumps()将无效。 json_util - 使用Python的json模块和BSON文档的工具 - 将完成此类工作。见http://api.mongodb.com/python/current/api/bson/json_util.html。
干杯!