HOWTO · Flask
フラスコのjsonify
このガイドでは、jsonify とは何かを確認し、それをフラスコにダンプします。
このページの内容
このガイドでは、jsonifyとは何かを確認し、フラスコにダンプします。 flask.jsonify と json.dump の用途は何ですか?また、それらの違いは何ですか?
それでは、これ以上待たずに、飛び込みましょう。
flask.jsonify() と json.dumps() の使用
flask.jsonify() と json.dumps() はわずかな違いしかないため、混乱する人が増えているようです。
2つの機能の違いは、最初に思われるほど難しくありません。
これらの違いを簡単に理解できるようにするために、主な質問に答えてみましょう: json.dumps() と flask.jsonify() はいつ使用する必要がありますか? しかしまず、json.dumps()とは何かを見てみましょう。
json.dumps() メソッド
まず、JSON ファイルの読み取りまたは書き込み中に、json パッケージを使用する必要があります。 このパッケージには、Python で記述されたデータを JSON ファイルに変換する json.dumps() という名前のメソッドが含まれています。
このメソッドは、Python で記述されたすべてのデータを変換し、JSON ファイルとして読み取られる文字列で返します。
json.dumps() メソッドの例は、都市のリストに名前を付けるために使用されます。
@app.route("/") # display on "home" page
def list_of_cities_dumps():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return json.dumps(
cities
) # json.dump() method is being used to call the list of cities
if __name__ == "__main__":
app.run(debug=True)
出力:
[{'name': 'Central City', 'country': 'USA'}, {'name': 'Ottawa', 'country': 'Canada'}]
上記の例に示すように、都市のリストの出力が表示されます。 読み取り可能ですが、ユーザーが学校の生徒に関するデータを持っていると想像してください。
明確なデータ構成がないため、この方法を使用すると、学生を区別するのが難しくなります。
この欠陥を克服するために、flask.jsonify() 関数が導入されました。
flask.jsonify() 関数
flask.json モジュールでは、jsonify は Flask の関数です。 Flask フレームワークの使用時にデータを HTTP 応答として送信するには、flask.jsonify() 関数を使用する必要があります。
この関数を使用するには flask をインポートする必要があります。
次に、この関数はデータを JSON ファイルに変換し、応答オブジェクトを返します。これは、サーバーがクライアント要求に応答するために使用されます。
変換された JSON ファイルは、新しく作成された応答オブジェクトに追加されます。 content-type ヘッダー フィールドを application/JSON に設定すると、一般にメディア タイプとして知られる適切な MIME タイプも追加されます。
メディア タイプまたは MIME タイプと一緒にファイルを送信すると、メッセージとともにそのファイルのタイプが示されます。
上記と同じ例を参考にして、flask.jsonify() の動作をさらに理解しましょう。
@app.route("/") # displays on the "home" page
def list_of_cities():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return jsonify(
cities
) # the function jsonify is used here to call the list of cities
if __name__ == "__main__":
app.run(debug=True)
出力:
[
{
"country": "USA",
"name": "Central City"
},
{
"country": "Canada",
"name": "Ottawa"
}
]
出力に示されているように、都市のリストの出力は整理されており、メソッド json.dumps() を使用した場合と比較して理解しやすくなっています。
以下のコードは、両方の例を組み合わせたものです。
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route("/")
def list_of_cities():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return jsonify(cities)
@app.route("/1")
def list_of_cities_dumps():
cities = [
{"name": "Central City", "country": "USA"},
{"name": "Ottawa", "country": "Canada"},
]
return json.dumps(cities)
if __name__ == "__main__":
app.run(debug=True)