python
  • json
  • mime-types
  • flask
  • 2012-08-14 2 views 26 likes 
    26

    Non riesco a capire come forzare il tipo MIME application/json per una vista in Flask. Ecco una semplice vista ho buttato insieme a scopo dimostrativo:Forza applicazione/tipo MIME json in una vista (Flask)

    @app.route("/") 
    def testView(): 
        ret = '{"data": "JSON string example"}' 
        return ret 
    

    La stringa JSON (tenutosi a variabili ret) viene raccolto da altrove (utilizzando stdout da un altro programma utilizzando subprocess) quindi non posso usare jsonify fornito con Flask.

    Ho dato un'occhiata alla domanda StackOverflow "Returning Json" Documentation e this ma non ho avuto fortuna fino ad ora. Mi sono guardato intorno per un po 'ora & continuerà a cercare ma ho pensato di chiedere qui nel caso in cui qualcuno si sia imbattuto in questo.

    Grazie.


    Vedi l'answer below

    La soluzione:

    @app.route("/") 
    def testView(): 
        ret = '{"data": "JSON string example"}' 
    
        resp = Response(response=ret, 
            status=200, 
            mimetype="application/json") 
    
        return resp 
    

    ho trovato questo sito utile: Implementing a RESTful Web API with Python & Flask

    risposta

    13

    Sembra che si può usare direttamente l'oggetto Response.

    Si prega di consultare uno dei commenti - Forcing application/json MIME type in a view (Flask)

    +1

    +1 - Grazie. Sto giocherellando con questo ora. –

    +12

    ['make_response'] (http://flask.pocoo.org/docs/api/#flask.Flask.make_response) è probabilmente un'opzione migliore in questo caso. Quindi imposta la proprietà 'mimetype'. 'r = make_response (dati); r.mimetype = 'application/json'; return r' – soulseekah

    +1

    Il precedente dovrebbe essere convertito nella risposta corretta! –

    22

    Se si utilizza

    from flask import jsonify 
    

    e poi nel codice

    return jsonify(somedict) 
    

    poi jsonify() imposta automaticamente il tipo MIME per 'application/json'

    +1

    Che cosa fai per gli array? –

    +0

    La documentazione raccomandava di creare metodi di serializzazione sui propri tipi di dati, ma io uso semplici dizionari (penso che lo si intenda con gli array). Jsonify() li converte perfettamente nei dizionari JSON. @ahmetalpbalkan –

    +0

    No, intendo cosa si fa per inviare le risposte dell'array JSON? (Diciamo che ho un array Python, lo renderò come array JSON che inizia con '[' e finisce con ']'. Cosa fai allora? –

     Problemi correlati

    • Nessun problema correlato^_^