JSON とは? やさしい解説(とよくあるエラーの直し方)
更新 2026-07-06
JSON は現代のソフトウェアのいたるところにあります — 設定ファイル、API 応答、データベース、設定値がすべて JSON に頼っています。ところがカンマ 1 つ余分に入るだけでファイル全体が壊れ、意味不明の「Unexpected token」エラーとにらめっこになります。このガイドは JSON とは何かをやさしい言葉で、構文が実際どう動くのか、最もよく出会うエラーの診断と修正方法を説明します。
JSON とは何か
JSON は JavaScript Object Notation の略です。構造化データを保存・交換するための軽量でテキストベースのフォーマットです。名前に反して JavaScript に縛られておらず — 事実上あらゆるプログラミング言語が読み書きでき、だからこそウェブ API の既定言語になりました。
JSON の要点は、人間と機械の両方が読めることです。データをいくつかの単純な構成要素の組み合わせで表します:
- オブジェクト(Object) — 波括弧
{ }で囲んだキー/値ペアの集まり。 - 配列(Array) — 角括弧
[ ]で囲んだ順序付きリスト。 - 値(Value) — 文字列、数値、
true、false、null、オブジェクト、または配列。
小さいが完全な例です:
{
"name": "Ada Lovelace",
"active": true,
"age": 36,
"skills": ["math", "logic"],
"address": {
"city": "London",
"postcode": null
}
}人がつまずく規則
JSON は JavaScript のオブジェクトによく似ていて、その類似こそが大半のミスの元です — JSON は より厳格 です。これらの規則を覚えておけば、大多数のエラーを避けられます:
1. キーと文字列にはダブルクォートが必要
すべてのキーは ダブルクォート で囲んだ文字列でなければならず、すべてのテキスト値もダブルクォートを使います。シングルクォートは JavaScript では問題なくても、有効な JSON ではありません。
// 無効
{ 'name': 'Ada' }
// 有効
{ "name": "Ada" }2. 末尾カンマは禁止
オブジェクトや配列の最後の項目の後にカンマを残すことはできません。多くのエディタや言語が他の場所ではこれを許すため、これが最もよくある JSON エラーです。
// 無効 — 最後の値の後にカンマ
{ "a": 1, "b": 2, }
// 有効
{ "a": 1, "b": 2 }3. コメントは禁止
標準の JSON にコメント構文はありません。// で始まる行や /* */ で囲んだブロックはパースエラーになります。コメントが必要なら JSON5 や YAML といったフォーマットが許します — そちらが合うなら YAML フォーマッター を参照してください。
4. 数値は素朴に
数値は引用符なし、先頭のゼロや末尾の小数点なしで書きます。01、1.、.5 はすべて無効です; 1、1.0、0.5 と書きます。
よくあるエラーと直し方
パーサが JSON を拒否するとき、たいてい行と列を報告します。その位置はパーサが あきらめた 地点を指しており、しばしば本当のミスのすぐ後です。最もよく見るメッセージとその実際の意味は次の通りです:
- "Unexpected token } in JSON" — ほぼ必ず、閉じ波括弧や角括弧の前の末尾カンマです。余分なカンマを削除しましょう。
- "Unexpected string" / "Expected comma" — 2 つの値の間のカンマが抜けているか、カンマが来るべき所に改行を使いました。
- "Unexpected token ' in JSON" — シングルクォートです。ダブルクォートに置き換えましょう。
- "Unexpected end of JSON input" — 角括弧か波括弧が閉じられていません。
{と}を数えましょう; 開いた分だけ対応する閉じが必要です。 - "Unexpected token o in JSON" — すでにオブジェクトのものを、JSON 文字列でないのにパースしようとした典型的な兆候です。パーサはテキストにのみ呼び出しましょう。
正確な箇所を突き止める最速の方法は、進めながら検証するフォーマッターにテキストを通すことです。当サイトの JSON フォーマッター・バリデータ は最初のエラーの正確な行と列を強調し、JSON が有効になると整形して、構造的な問題(置き間違えた括弧、1 段深くネストした値)を一目でわかるようにします。すべてブラウザ内で動くので、非公開・機密のデータも安全に確認できます。
整形 vs. 最小化(minify)
JSON を扱うとき 2 つの操作が絶えず出てきます。整形(beautify や pretty-print とも)はインデントと改行を加えて密な塊を読みやすくします — デバッグ中に理想的です。最小化(Minify) は不要な空白と改行をすべて剥ぎ取り、可能な限り小さな出力を作ります — ネットワークで送るときやコードに埋め込むときなど、サイズが重要な場面で理想的です。どちらでもデータは同一で、空白だけが変わります。
クイックチェックリスト
JSON をプログラムに渡す前に確認しましょう:
- すべてのキーと文字列値がダブルクォートを使う。
- 末尾カンマがない。
- コメントがない。
- すべての角括弧と波括弧の対応が取れている。
- バリデータをエラーなしで通る。
この 5 つを満たせば、JSON は設計どおり — 退屈で予測可能でただ動くフォーマット — になります。それでも何かすり抜けたら、JSON フォーマッター に貼り付けて問題をまっすぐ指し示させましょう。
データフォーマット & エンコーディング をもっと見る
データフォーマット & エンコーディング のガイドをすべて見る →このガイドで触れたツール