JSON minificado en jsonify del flask ()

Flask ofrece la conveniente función jsonify() , que devuelve un objeto JSON de las variables de Python:

 from flask import Flask, jsonify app = Flask(__name__) @app.route("/") def json_hello(): return jsonify({x:x*x for x in range(5)}), 200 if __name__ == "__main__": app.run(debug=True) 

Que devuelve:

 { "0": 0, "1": 1, "2": 4, "3": 9, "4": 16 } 

(PS: observe la conversión de int a string para cumplir con JSON).

Este formato sangrado es inútil para salidas largas, y prefiero la versión minified:

 {"1": 1, "0": 0, "3": 9, "2": 4, "4": 16} 

¿Cómo puedo obtener el JSON en versión minified de jsonify() de Flask?

    Simplemente configure la clave de configuración JSONIFY_PRETTYPRINT_REGULAR en False – Flask imprime JSON a menos que lo solicite una solicitud AJAX (de forma predeterminada).

    Además de la otra respuesta de JSONIFY_PRETTYPRINT_REGULAR , también puede deshacerse de los espacios entre los elementos de la lista extendiendo el jsonencoder del matraz, así:

     from flask import Flask from flask.json import JSONEncoder class MiniJSONEncoder(JSONEncoder): """Minify JSON output.""" item_separator = ',' key_separator = ':' app = Flask(__name__) app.json_encoder = MiniJSONEncoder app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False 

    Los valores predeterminados para item_separator y key_separator tienen un espacio final cada uno, por lo que al reemplazarlos de esta manera, se eliminan esos espacios de la salida.

    (Estrictamente hablando, supongo que podría establecer esos valores en el JSONEncoder predeterminado, pero necesitaba este enfoque ya que tenía que sobrecargar JSONEncoder.default() por otras razones)