サンプル:
// 整形されたJSONがここに表示されます
有効なJSON
キー数
深度
サイズ

JSONとは?

JSON(JavaScript Object Notation)は、JavaScriptのオブジェクトリテラル構文に由来する軽量のテキストベースデータ交換フォーマットです。RFC 8259で定義され、キーと値のペア(オブジェクト)と順序付きリスト(配列)でデータを表現します。ほぼすべてのモダンプログラミング言語に組み込みのJSONパーサーがあるため、REST API、設定ファイル、データシリアライゼーションで主流のフォーマットです。

JSONは6つのプリミティブ型をサポートしています:stringnumberbooleantrue/false)、nullobject(波括弧)、array(角括弧)。すべての文字列とオブジェクトキーはダブルクォートで囲む必要があります — シングルクォートは有効なJSONではありません。

よくあるJSON構文エラー

JSON仕様は意図的に厳格なため、小さなミスでもパース全体が失敗します。無効なJSONの最も頻繁な原因は:

  • 末尾のカンマ: オブジェクトや配列の最後の要素の後のカンマ — {"a": 1,} — はJSONでは許可されていません。JavaScriptのオブジェクトリテラルや多くの言語では有効ですが、JSON仕様では明示的に禁止されています。
  • シングルクォートの文字列: JSONではすべての文字列とキーにダブルクォートが必要です。{'key': 'value'}は無効で、{"key": "value"}でなければなりません。
  • クォートなしのキー: オブジェクトキーは常にクォートされた文字列でなければなりません。{name: "Alice"}は無効なJavaScriptスタイルの省略形です — JSONでは{"name": "Alice"}が必要です。
  • JavaScriptコメント: JSONは// 単一行/* ブロック */コメントをサポートしていません。設定ファイルでコメントが必要な場合は、JSONCやJSON5を検討してください — ただし、これらは専用のパーサーが必要で、標準のJSONとは互換性がありません。
  • undefined値: undefinedはJavaScriptの概念であり、JSONには表現がありません。undefined値を持つキーはJSON.stringify()で暗黙的に削除されます。
  • エスケープされていない特殊文字: 文字列内の特定の文字はエスケープが必要です:\"(ダブルクォート)、\\(バックスラッシュ)、\n(改行)、\t(タブ)。文字列リテラル内の生の改行は許可されません。

JavaScriptのJSON.parseとJSON.stringify

JavaScriptはJSONを扱うための2つの組み込みメソッドを提供しています:

// JSON文字列をJavaScriptオブジェクトにパース
const data = JSON.parse('{"name":"Alice","age":30}');
console.log(data.name); // "Alice"

// JavaScriptオブジェクトをJSON文字列に変換
const json = JSON.stringify(data, null, 2); // 2スペースインデント

// 常にtry/catchで検証
try {
  const parsed = JSON.parse(userInput);
} catch (e) {
  console.error('無効なJSON:', e.message);
}

// replacer関数でキーをフィルタ
const filtered = JSON.stringify(data, ['name']);
// '{"name":"Alice"}'

よくある質問

JSONとは何か、なぜ使われるのか?

JSON(JavaScript Object Notation)はJavaScriptのオブジェクト構文に由来する軽量のテキストベースデータ交換フォーマットです。キーと値のペアと順序付きリストを使用し、人間が読みやすく機械が解析しやすい形式です。JSONはREST API、設定ファイル、データストレージで主流のフォーマットであり、ほぼすべてのプログラミング言語に組み込みのJSONパーサーがあります。

オンラインでJSONを検証するには?

上の入力フィールドにJSONをペーストし、検証ボタンをクリックしてください。このツールはJSON.parse()を使用してJSONをチェックし、無効な場合は正確な構文エラーを行番号と列番号付きで報告します。よくある問題は、末尾のカンマ、シングルクォートの文字列、クォートなしのキー、JavaScriptコメントです — これらはいずれもJSONでは無効です。

JSONとXMLの違いは?

JSONは一般的にXMLよりコンパクトで、解析が速く、読みやすいです。XMLは冗長な開始・終了タグを使用し、属性、名前空間、コメントをサポートします。JSONはほとんどの言語のデータ構造(オブジェクトと配列)に直接マッピングされます。JSONはREST APIではXMLに大きく取って代わりましたが、XMLはSOAPサービス、ドキュメント形式(SVG、DOCX)、エンタープライズシステムでまだ使用されています。

JSONで末尾のカンマが許可されないのはなぜ?

末尾のカンマ(オブジェクトや配列の最後の要素の後のカンマ)はJSON仕様(RFC 8259)では無効です。これはパーサーを簡素化するための厳格な設計決定です。JavaScript自体は配列やオブジェクトリテラルで末尾のカンマを許可しますが、JSON.parse()はSyntaxErrorをスローします。より寛容なフォーマットが必要な場合は、JSON5やJSONC(コメント付きJSON)を検討してください。ただし、これらは専用のパーサーが必要です。

関連する開発者ツール