PyMongo和Flask的Jsonify包含转义斜线 [英] PyMongo and Flask's Jsonify contains escape slashes
问题描述
$ b
@ app.route('/ stories)我试图用Mongodb集合中的Flask做出响应。 ',methods = ['GET'])
def get_stories():
stories = db.stories.find()
$ b $ 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)
获取所有项目并将其编码为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()
与
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包含转义斜线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!