JSON」「ジェイソン」「APIのレスポンス」… APIやプログラミングの話を覗くと、必ず出てくる言葉。

あちこちで聞く JSON
図1:あちこちで聞く「JSON」

APIの記事 では、アプリ同士の会話をレストランの注文で例えました。今回はその会話で実際にやりとりされる「伝票」——JSON を、ふんわり見ていきます。

JSON ってなに?

ざっくり言うと、JSON は アプリ同士でデータをやりとりするときの「伝票フォーマット」 です。

JSON=アプリ同士の伝票
図2:JSON=アプリ同士の「伝票」

略は「JavaScript Object Notation」。読み方は「ジェイソン」。覚えなくてOK、意味だけ押さえれば十分:

  • JavaScript = JavaScriptで使われ始めた
  • Object = 項目と値の組み合わせ
  • Notation = 書き方

つまり「項目と値で書くデータの書き方」。 レストランの注文票が「料理名と数量」で書かれてるみたいに、JSONは「項目: 値」の組み合わせでデータを書きます。

書き方は「項目:値」のセット

JSON はこんなふうに書きます。

JSONの書き方
図3:「項目: 値」のペアで書く

例えば「ken さんの注文」を JSON で書くとこんな感じ:

{
  "name": "ken",
  "order": "唐揚げ定食",
  "quantity": 2,
  "takeout": true
}

ルールはたったこれだけ:

  • 全体を { } で囲む
  • 項目(キー) はダブルクォート " " で囲む
  • 値(バリュー) はそのあとに : で繋ぐ
  • 項目同士は , で区切る

値には文字("唐揚げ定食")、数字(2)、true / false、何もないことを示す null などが入ります。 ノートに項目と中身を書いていく感覚で、人間にも読みやすいのが特徴です。

なんで JSON が必要?

アプリ同士で会話するとき、「ただの文章」では機械が中身を読み取れません。

文章 vs JSON
図4:「ken は唐揚げを 2 個」だと機械はわからない/JSONなら一発

たとえば「ken さんは唐揚げを 2 個、テイクアウトで頼みました」と書かれても、機械は「どれが名前?どれが数量?」を判断できません。 そこで「項目: 値」の決まったかたちで書けば:

  • どんなアプリでも同じ読み方で中身を取り出せる
  • 言語が違う(PythonでもJavaScriptでも)アプリ同士でも翻訳なしでやりとりできる
  • 人間も目で見て読めるので、トラブル時にデバッグしやすい

→ つまり JSON は「機械にも人間にも読める共通の伝票」。アプリ同士の会話で世界共通の標準になっています。

入れ子もできる

JSONには、ちょっとした特徴があります。値の中にさらに JSON を入れられること。

JSONの入れ子構造
図5:マトリョーシカみたいに JSON の中に JSON

例えば「ken の注文+住所」を一緒に書くとこんな感じ:

{
  "name": "ken",
  "order": "唐揚げ定食",
  "address": {
    "city": "東京都",
    "zip": "100-0001"
  }
}

"address" の値に、また { } の塊が入ってます。マトリョーシカみたいに、外側のJSONが内側のJSONを包んでいる構造。 これで「ひとまとめの注文情報」を1枚の伝票に詰め込めるので、複雑なデータも整理して扱えます。

API だけじゃない、いろんな場所で使われてる

JSON は API のレスポンスで一番よく見かけますが、実は IT 世界の汎用フォーマットとして、いろんな場面で活躍しています。

JSONが使われる場面
図6:API・設定ファイル・ログ・データ保存…JSONは万能
  • APIのレスポンス → ChatGPT API、Google Maps API などの返り値はほぼJSON
  • 設定ファイルpackage.json、VS Code の settings.json、Claude の設定もJSON
  • ローカルストレージ → ブラウザに保存するデータもJSON形式が多い
  • ログ → アプリの動作記録もJSONで保存することが多い

アプリ同士・人とアプリの間でデータをやりとりする」場面では、まず JSON が選ばれると思って OK。伝票・名簿・カルテ・設定書——役割が違っても、フォーマットは同じJSONで対応できます。

まとめ

JSONのすべて、これ1枚で
図7:JSON のすべて、これ1枚で

ふんわり理解チェック

  • JSON=アプリ同士でデータをやりとりする「伝票」のフォーマット
  • 「項目: 値」のペアを `{ }` で囲んで書く
  • 入れ子にできるので、複雑なデータも整理して扱える
  • API・設定ファイル・ログ…IT世界の汎用フォーマット

普段は見えない裏方ですが、ChatGPT を叩くときも、VS Code が設定を読み込むときも、裏側で JSON が流れています。「項目: 値」——この単純なルールが、世界中のアプリの会話を支えています 🌱