JSON を検証する方法
- JSON を貼り付けるか、ファイルを開きます。入力中に自動で検証されます。
- 統計情報とともに緑色の「有効な JSON です」が表示されれば、ドキュメントは正しい形式です。そうでない場合はエラーを確認してください。行、列、そこで何が必要だったかが表示されます。
- ハイライトされた行を修正するか修復をクリックし、最後に整形して読みやすくします。
よくある JSON のエラーと直し方
| エラー | 例 | 直し方 |
|---|---|---|
| 末尾のカンマ | [1, 2, ] | ] や } の直前のカンマを削除 |
| シングルクォート | {'name': 'Ada'} | ダブルクォートを使う:{"name": "Ada"} |
| 引用符のないキー | {name: "Ada"} | キーを引用符で囲む:{"name": "Ada"} |
| カンマの不足 | {"a": 1 "b": 2} | プロパティの間にカンマを追加 |
| コメント | // settings | JSON にコメントはないので削除 |
| 文字列内の改行 | "line 1⏎line 2" | 実際の改行の代わりに \n と書く |
| 無効な値 | undefined、NaN、True | null、数値、true、false を使う |
| 先頭の 0 | {"zip": 01234} | 1234 と書くか、文字列 "01234" として残す |
| 括弧の閉じ忘れ | {"a": [1, 2} | [ は必ず ] で、{ は必ず } で閉じる |
有効な JSON のルール
JSON は RFC 8259 で定義されています。有効なドキュメントは、いくつかの厳密なルールに従います。
- トップレベルの値はちょうど 1 つで、通常はオブジェクト
{}か配列[]です。 - オブジェクトのメンバーはカンマで区切られた
"key": valueのペアで、キーは常にダブルクォートで囲んだ文字列です。 - 文字列はダブルクォートで囲み、内部で使えるエスケープは
\" \\ \/ \b \f \n \r \tと\uXXXXだけです。 - 数値は 10 進数で、先頭の 0、
+記号、16 進数、NaNやInfinityは使えません。 true、false、nullは小文字で書きます。- トークンの間にはスペース、タブ、改行を入れられますが、コメントは入れられません。
コマンドラインで JSON を検証する
- Python:
python -m json.tool file.jsonで最初のエラーの行と列が表示されます。 - jq:
jq empty file.jsonは、ファイルが無効な場合にエラーメッセージを出して終了します。 - Node.js:
node -e "JSON.parse(require('fs').readFileSync('file.json', 'utf8'))"
よくある質問
JSON バリデーターと JSON リンターの違いは何ですか?
バリデーターは、テキストが JSON の構文に従っているかを確認します。リンターは通常、一貫したスタイルもチェックします。この JSON チェッカーは RFC 8259 に厳密に従って検証し、「整形」を使えばインデントもそろえられます。
JSON Schema に対する検証もできますか?
このページでチェックするのは構文です。データの想定構造を定義するには、JSON Schema 生成ツールでサンプルのドキュメントからスキーマを作成してください。
ここでは有効なのに、ほかのプログラムでエラーになるのはなぜですか?
プログラムは多くの場合、特定の構造(決まったキーや型)、BOM なしの UTF-8 のような特定のエンコーディング、一定範囲内の数値などを前提としています。構文的に正しい JSON でも、こうしたアプリケーション側のルールに違反することがあります。
コメント付きの JSON(JSONC)は有効ですか?
いいえ。標準の JSON ではコメントは使えません。一部のエディタは設定ファイル(JSONC)でコメントを受け付けますが、API や JSON.parse では使えません。「修復」でコメントを自動的に削除できます。