Zde porozumíme funkci jsonify() ve webovém frameworku Flask pro Python, která převádí výstup funkce na objekt odpovědi JSON. Je to podobné jako u j son.dumps() funkce ve standardní knihovně Pythonu, která převádí objekt Pythonu na řetězec ve formátu JSON.
Co je jsonify()
Funkce jsonify() je užitečná v aplikacích Flask, protože automaticky nastavuje správná záhlaví odpovědí a typ obsahu pro odpovědi JSON a umožňuje vám snadno vracet data ve formátu JSON z vašich obslužných programů směrování. Díky tomu je snazší a pohodlnější vytvářet rozhraní API, která vracejí data JSON.
Syntaxe funkce jsonify().
Tato funkce přijímá jeden nebo více pozičních argumentů, které představují data, která mají být převedena na objekt odpovědi JSON, a libovolný počet argumentů klíčových slov, které se používají k přizpůsobení objektu odpovědi JSON.
jsonify(*args, **kwargs)
Příklad jsonify() s bez argumentu
Můžete použít jsonify() bez jakýchkoli argumentů, v tomto případě vrátí prázdný objekt odpovědi JSON s výchozím stavovým kódem 200 (OK) a výchozím typem obsahu application/json.
Python3
příkaz java return
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()> |
>
>
Příklad jsonify() s argumenty
V tomto příkladu voláme jsonify() s jedním pozičním argumentem (seznam uživatelských objektů) a také dvěma argumenty klíčového slova se stavem a mimetypem. Argument status se používá k nastavení kódu stavu HTTP pro odpověď a argument mimetype se používá k nastavení typu obsahu pro odpověď.
Python3
kolo matematika java
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >users>=> [{>'id'>:>1>,>'username'>:>'Alice'>}, {>'id'>:>2>,>'username'>:>'Bob'>}]> >return> jsonify(users, status>=>200>, mimetype>=>'application/json'>)> |
>
>
metoda jsonify() ve Flasku
V tomto příkladu máme aplikaci Flask s trasou, která vrací seznam uživatelských objektů. Když klient zadá požadavek na tuto trasu, provede se funkce get_users() a seznam uživatelských objektů se převede na objekt odpovědi JSON pomocí funkce jsonify(). Tento objekt odpovědi JSON je poté odeslán zpět klientovi.
Python3
json z java objektu
from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/'>)> def> get_users():> >print>(>'Using jsonify'>)> >users>=> [{>'id'>:>1>,>'username'>:>'sweety'>},> >{>'id'>:>2>,>'username'>:>'pallavi'>}]> >return> jsonify({>'users'>: users})> if> __name__>=>=> '__main__'>:> >app.run()> |
>
>
převést řetězec na celé číslo
Výstup:

metoda jsonify().
metoda json.dumps() ve Flasku
Na rozdíl od toho, pokud byste použili json.dumps() budete muset sami převést seznam uživatelských objektů na řetězec ve formátu JSON a poté nastavit příslušné hlavičky odpovědí a ručně vrátit odpověď klientovi:
Použití jsonify() je obecně jednodušší a pohodlnější než použití json.dumps(), proto se doporučuje používat jsonify() kdykoli je to možné v aplikacích Flask.
Python3
from> flask>import> Flask, Response> import> json> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >users>=> [{>'id'>:>1>,>'username'>:>'sweety'>},> >{>'id'>:>2>,>'username'>:>'pandey'>}]> >response>=> Response(> >response>=>json.dumps(users),> >status>=>200>,> >mimetype>=>'application/json'> >)> >return> response> if> __name__>=>=> '__main__'>:> >app.run()> |
>
>
Výstup:
http://127.0.0.1:5000/api/users
mb na gb
Proč používat jsonify() místo json.dumps()
Existuje několik důvodů, proč se v aplikacích Flask doporučuje používat funkci jsonify() místo funkce json.dumps():
- Funkce jsonify() je pohodlnější a jednodušší než json.dumps(). jsonify() má jednoduchou a intuitivní syntaxi a automaticky zpracovává podrobnosti o převodu vašich dat na objekt odpovědi JSON a jejich vrácení klientovi. Naproti tomu json.dumps() vyžaduje, abyste si tyto detaily zpracovali sami, což může být časově náročnější a náchylnější k chybám.
- Funkce jsonify() automaticky nastaví správná záhlaví odpovědí a typ obsahu pro odpovědi JSON, zatímco json.dumps() nikoli. To znamená, že při použití jsonify() nemusíte ručně nastavovat záhlaví Content-Type na application/json, ale při použití json.dumps() byste to museli udělat ručně.
- jsonify() vám umožňuje snadno vracet data ve formátu JSON z vašich obslužných programů směrování, zatímco json.dumps() nikoli. Pomocí jsonify() můžete jednoduše vrátit data, která chcete převést na objekt odpovědi JSON z vašeho obslužného programu trasy, a jsonify() se postará o zbytek. Pomocí json.dumps() byste museli sami převést data na řetězec ve formátu JSON a poté je vrátit jako součást objektu Response.
- Celkově může použití jsonify() místo json.dumps() v aplikacích Flask usnadnit a pohodlněji vytvářet rozhraní API, která vracejí data JSON. Umožňuje vám soustředit se na data a logiku vaší aplikace a nemusíte se starat o podrobnosti formátování a vracení odpovědí JSON.