Web・インターネットの用語一覧へ
このページの目次

jsonifyとは?

読み方:jsonify

最終更新:2026/08/18

3秒でわかる

Flask で dict や list を JSON のレスポンスに変換して返す関数。ヘッダまで正しく設定してくれるので API 実装の基本になります。

もう少し詳しく

どういうものか

Flask が用意している関数で、Python の dict や list を JSON に直し、Content-Type を application/json に設定した Response オブジェクトを作って返します。ビュー関数の戻り値としてそのまま使えます。Flask 2 系以降は list をトップレベルに渡すこともでき、内部のシリアライズ設定はアプリごとに差し替えられます。

なぜ必要か

ビュー関数が文字列を返すと、Flask はそれを HTML とみなして Content-Type を text/html にします。中身が JSON の形をしていても、受け取ったブラウザや fetch は JSON として扱わないため、クライアント側で自前のパースが必要になります。jsonify を使うと、変換とヘッダ設定が一度に済み、日本語や入れ子の扱いも Flask 側の設定に従って一貫します。

具体例

from flask import Flask, jsonify, request app = Flask(__name__) app.json.ensure_ascii = False # 日本語をそのまま出す users = [{"id": 1, "name": "田中"}, {"id": 2, "name": "鈴木"}] @app.get("/api/users") def list_users(): return jsonify(users) @app.get("/api/users/<int:user_id>") def get_user(user_id): for u in users: if u["id"] == user_id: return jsonify(u) return jsonify({"error": "not found"}), 404

つまずきやすいところ

  • json.dumps と取り違えると、返るのはただの文字列でヘッダが付きません。API として使うなら jsonify を通します。

  • 既定では非 ASCII が \u7530 のような形にエスケープされて出ます。壊れているわけではなくブラウザ側で戻りますが、目視で確認したい場合は ensure_ascii を False にします。

  • ステータスコードはタプルの 2 番目で返します。jsonify の引数に status を渡す形ではありません。

  • datetime や Decimal、独自クラスをそのまま渡すと TypeError になります。文字列や数値に直してから渡すか、シリアライザを拡張します。
  • 似た用語との違い

    呼び出し戻るものContent-Type
    jsonify(obj)Response オブジェクトapplication/json
    json.dumps(obj)文字列text/html のまま
    make_response(...)Response オブジェクト自分で設定する

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地jsonifyWeb

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    Pythonコースの全編を見る