PyMongo y Jsonify de Flask contienen barras de escape

Estoy intentando hacer una respuesta utilizando Flask de una colección de Mongodb:

@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) 

Esto obtiene todos los elementos y lo codifica en una respuesta JSON, pero se ve así:

 { "data": [ "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c34431e20307544db9cb\"}}", "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c34d31e20307584c3e6e\"}}", "{\"content\": \"some story here\", \"_id\": {\"$oid\": \"5293c57d31e20307a7b40abe\"}}" ] } 

¿Hay alguna forma de codificar esto usando comillas simples para que no se agregue en las cadenas de escape? O hay algo que estoy pasando por alto

Usted está codificando dos veces :

 json_docs = [json.dumps(doc, default=json_util.default) for doc in stories] resp = jsonify(data=json_docs) 

Ahora cada entrada en json_docs es una cadena que representa un objeto JSON.

Eliminar la llamada json.dumps() :

 resp = jsonify(data=stories) 

o use flask.json.dump() con una Response() :

 resp = Response(json.dumps({'data': stories}, default=json_util.default), mimetype='application/json') 

Esto le permite usar su controlador json_util.default en los objetos del cursor.