获取所有项目并将其编码为JSON响应,但看起来像这样:
{data:[{\content \:\ \_id \:{\$ oid \:\5293c34431e20307544db9cb \}},{\content \:\一些故事在这里,\_id \:{\$ oid \:\5293c34d31e20307584c3e6e\}},{\content \: \这里有些故事,\_id \:{\$ oid \:\5293c5 7d31e20307a7b40abe\}}}有没有办法编码这个使用单引号,所以它不会在转义字符串中添加?或者是有我忽略的东西
解决方案您正在编码两次:
json_docs = [json.dumps(doc,default = json_util.default)for doc in stories] resp = jsonify (data = json_docs)现在在 json_docs 是一个表示JSON对象的字符串。
删除 json.dumps()调用:
resp = jsonify(data = stories)或使用 flask.json.dump()与 Response():
resp =回复(json.dumps({'data':stories},default = json_util.default), mimetype ='application / json')这样可以使用 json_util。游标对象上的默认处理程序仍然存在。
I'm trying to make a response using Flask from a Mongodb collection:
@app.route('/stories', methods = ['GET']) def get_stories(): stories = db.stories.find() json_docs = [json.dumps(doc, default=json_util.default) for doc in stories] resp = jsonify(data=json_docs) resp.status_code = 200 return make_response(resp)This gets all the items and encodes it into a JSON response, but it looks like this:
{ "data": [ "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c34431e20307544db9cb\"}}", "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c34d31e20307584c3e6e\"}}", "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c57d31e20307a7b40abe\"}}" ] }Is there a way to encode this using single quotes so it doesn't add in the escape strings? Or is there something I'm overlooking
解决方案You are encoding twice:
json_docs = [json.dumps(doc, default=json_util.default) for doc in stories] resp = jsonify(data=json_docs)Now each entry in json_docs is a string representing a JSON object.
Remove the json.dumps() call:
resp = jsonify(data=stories)or use flask.json.dump() with a Response():
resp = Response(json.dumps({'data': stories}, default=json_util.default), mimetype='application/json')This lets you use your json_util.default handler on the cursor objects still.
更多推荐
PyMongo和Flask的Jsonify包含转义斜线
发布评论