JSONバリデーター
JSONを貼り付けて標準仕様に沿っているか確認します。問題があれば、正確なエラーメッセージと位置を表示します。
入力JSON
JSONをオンラインで検証
カンマが1つ余計なだけで、APIがリクエストを拒否したり、設定ファイルが読み込めなかったりします。しかも、そのときのエラーが役に立つとは限りません。ドキュメントをバリデーターに貼り付ければ、有効なJSONかどうか、そうでなければどこで壊れているのかが一瞬でわかります。
このページはJSON整形ツールを開きます。変更のたびにブラウザーの標準準拠のパーサーで検証し、有効ならドキュメントを整形します。
バリデーターがよく見つけるエラー
| ミス | 無効 | 有効 |
|---|---|---|
| 末尾のカンマ | {"a": 1,} | {"a": 1} |
| シングルクォート | {'a': 'x'} | {"a": "x"} |
| 引用符のないキー | {a: 1} | {"a": 1} |
| カンマ抜け | {"a": 1 "b": 2} | {"a": 1, "b": 2} |
| コメント | {"a": 1 // note} | コメントを削除する |
| 文字列内のエスケープされていない改行 | "…"の中の改行 | "line 1\nline 2" |
| 特殊な値 | NaN、undefined | nullまたは数値 |
エラーメッセージの読み方
ブラウザーはJSONのエラーを位置付きで報告します。例えば「Expected double-quoted property name in JSON at position 12」(位置12にダブルクォートで囲んだプロパティ名が必要)のような形です。位置は0から数えた文字数なので、パーサーが処理をあきらめた文字を指しています。本当のミスはたいていその直前にあり、閉じ波括弧の前のカンマや、ダブルクォートにすべきだった引用符などです。
有効であることと正しいことは別
バリデーターが確認するのは構文であって、意味ではありません。キーのつづりが間違っていても、数値が文字列として送られていても、必須のフィールドが欠けていても、JSONとしては有効です。構造を確認するには、コードやCIでJSON Schemaのバリデーターを使ってください。重複したキーにも注意が必要です。厳密には許されていますが、ほとんどのパーサーは何も言わずに最後の値だけを残します。
コードで検証する
- JavaScript:
try/catchの中でJSON.parse(text) - Python:
json.loads(text)、コマンドラインならpython -m json.tool file.json - jq:
jq empty file.jsonはファイルが有効なら何も出力しません - PHP:PHP 8.3以降は
json_validate($text)
有効になったら、JSON圧縮(Minify)で空白を取り除いて転送に備えましょう。
関連ガイド
JSON入門:構文ルールとJavaScript・PythonでのJSONの扱い方
JSONは、最もシンプルで最も広く使われているデータ交換形式です。いくつかの短いルールと、各言語に2つずつある関数を覚えれば、どんなデータでも読み込み、作成し、保存できます。
Unexpected token in JSONとは?意味と直し方
このエラーは、解析しようとしたテキストがJSONではないことを意味します。エラーに出てくるトークンを見れば、代わりに何を受け取ったのかがたいてい分かります。
Unexpected end of JSON inputとは?意味と直し方
パーサーが完全な値を見つける前にテキストが尽きてしまった、という意味です。そしてほとんどの場合、原因はテキストがまったくなかったことです。