logo

Flask で json.dumps() の代わりに jsonify() を使用する

ここでは、関数の出力を JSON 応答オブジェクトに変換する、Python 用の Flask Web フレームワークの jsonify() 関数について理解します。それはjに似ています 息子.ダンプ() Python 標準ライブラリの関数。Python オブジェクトを JSON 形式の文字列に変換します。

jsonify()とは

jsonify() 関数は、JSON 応答の正しい応答ヘッダーとコンテンツ タイプを自動的に設定し、ルート ハンドラーから JSON 形式のデータを簡単に返すことができるため、Flask アプリで役立ちます。これにより、JSON データを返す API の作成がより簡単かつ便利になります。



jsonify() 関数の構文

この関数は、JSON 応答オブジェクトに変換されるデータを表す 1 つ以上の位置引数と、JSON 応答オブジェクトのカスタマイズに使用される任意の数のキーワード引数を受け取ります。

私のライブクリケット

jsonify(*args, **kwargs)

引数なしの jsonify() の例



引数なしで jsonify() を使用できます。この場合、デフォルトのステータス コード 200 (OK) とデフォルトのコンテンツ タイプ application/json を持つ空の JSON 応答オブジェクトが返されます。

Python3






from> flask>import> Flask, jsonify> app>=> Flask(__name__)> @app>.route(>'/api/users'>)> def> get_users():> >return> jsonify()>

>

>

引数を指定した jsonify() の例

この例では、単一の位置引数 (ユーザー オブジェクトのリスト) と、ステータスと MIME タイプを含む 2 つのキーワード引数を指定して jsonify() を呼び出しています。 status 引数は応答の HTTP ステータス コードを設定するために使用され、mimetype 引数は応答のコンテンツ タイプを設定するために使用されます。

Python3


mysqlはすべてのユーザーをリストします



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

>

>

Flask の jsonify() メソッド

この例では、ユーザー オブジェクトのリストを返すルートを持つ Flask アプリがあります。クライアントがこのルートにリクエストを送信すると、get_users() 関数が実行され、ユーザー オブジェクトのリストが jsonify() 関数を使用して JSON 応答オブジェクトに変換されます。この JSON 応答オブジェクトはクライアントに送り返されます。

Python3




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

>

>

出力:

Flask で json.dumps() の代わりに jsonify() を使用する

jsonify() メソッド

Flask の json.dumps() メソッド

対照的に、 json.dumps() この関数を使用するには、ユーザー オブジェクトのリストを自分で JSON 形式の文字列に変換し、適切な応答ヘッダーを設定して、手動で応答をクライアントに返す必要があります。

一般に jsonify() を使用する方が json.dumps() を使用するよりも簡単で便利なので、Flask アプリでは可能な限り jsonify() を使用することをお勧めします。

種子 vs 胞子

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

>

>

出力:

http://127.0.0.1:5000/api/users

Flask で json.dumps() の代わりに jsonify() を使用する

json.dumps() の代わりに jsonify() を使用する理由

Flask アプリで json.dumps() 関数の代わりに jsonify() 関数を使用することが推奨される理由はいくつかあります。

  • jsonify() は、json.dumps() よりも便利で使いやすいです。 jsonify() の構文はシンプルで直感的で、データを JSON 応答オブジェクトに変換してクライアントに返す詳細を自動的に処理します。対照的に、json.dumps() ではこれらの詳細を自分で処理する必要があるため、時間がかかり、エラーが発生しやすくなります。
  • jsonify() は JSON 応答の正しい応答ヘッダーとコンテンツ タイプを自動的に設定しますが、 json.dumps() は設定しません。つまり、jsonify() を使用する場合は Content-Type ヘッダーを application/json に手動で設定する必要はありませんが、json.dumps() を使用する場合は手動で設定する必要があります。
  • jsonify() を使用すると、ルート ハンドラーから JSON 形式のデータを簡単に返すことができますが、json.dumps() ではそれができません。 jsonify() を使用すると、ルート ハンドラーから JSON 応答オブジェクトに変換したいデータを返すだけで、残りは jsonify() が処理します。 json.dumps() を使用する場合は、データを自分で JSON 形式の文字列に変換し、それを Response オブジェクトの一部として返す必要があります。
  • 全体として、Flask アプリで json.dumps() の代わりに jsonify() を使用すると、JSON データを返す API を作成するのがより簡単かつ便利になります。これにより、JSON 応答のフォーマットや返しの詳細を気にする必要がなくなり、アプリのデータとロジックに集中できるようになります。