使い方
- JSONを入力欄に貼り付けるか、ファイルを開くか、「例を試す」を押してエラーレポートを確認します。
- 結果を確認します。有効なJSONの場合は緑色のメッセージが表示され、エラーがある場合は最初のエラー、その行と列、および問題箇所を示すマーカーが表示されます。
- ヒントに従ってエラーを修正して、もう一度確認します。入力中も結果は更新されます。
- JSONが有効な場合は、ルートの型、キーの数、ネストの深さ、バイト数の統計を確認できます。
仕組み
このバリデーターは、ブラウザー標準のJSONパーサーを使ってJSON標準(RFC 8259 / ECMA-404)に照らし、構文を検証します。そのため、ここで検証に通ったドキュメントは、JavaScriptのJSON.parseや、他言語の標準準拠パーサーでも受け入れられます。解析に失敗した場合は、このツール用の厳密なチェッカーがテキストを一度走査し、最初のエラーと正確な行・列を特定して、問題箇所の下に ^ マーカーを付けて表示します。
ヒントでは、JSONを手入力したりJavaScriptからコピーしたりするときによくあるミスを取り上げます。最後の項目の後のカンマ、単一引用符で囲んだ文字列、引用符で囲まれていないキー、// や /* */ のコメント、NaN、Infinity、undefinedなどの値、文字列内にそのまま入った改行、JSON LinesファイルのようにJSONドキュメントを2つ続けて貼り付けるケースです。1つのミスが後続のすべてに影響することがあるため、報告するのは最初のエラーのみです。
このツールが検証するのは構文だけです。JSON Schemaに対する検証は行わないため、必須フィールドが不足しているかどうかは判断できません。また、重複キーについても警告しません。標準では重複キーが許容されており、ほとんどのパーサーは最後の値を保持します。統計では、すべての階層のオブジェクトにあるキーを数えます。フラットなオブジェクトまたは配列の深さは1で、階層が1つ深くなるごとに1ずつ増えます。
使用例
JavaScriptからコピーした設定
{name: 'demo', debug: true,} は、1行目の2列目で「オブジェクトのキーは二重引用符で囲む必要があります」というエラーになります。キーを引用符で囲むと、次の検証では単一引用符で囲まれた文字列が、その次は末尾のカンマが指摘されます。
1行に1つのオブジェクトを含むログファイル
{"id":1} と {"id":2} のように2行を貼り付けると、2行目で「JSON値の終わりの後に、さらに内容があります」と報告されます。それぞれの行は単独では有効なJSON(JSON Lines)ですが、まとめて扱うには [ ] で囲み、カンマで区切る必要があります。
APIペイロードの検証
2 MBのレスポンスをすぐに検証し、Root type: Array、トップレベルの項目数1,500、ネストの深さ4と表示します。コードを書く前に、内容を手早く確認できます。
よくある質問
JSON Schemaに対する検証もできますか?
いいえ。テキストが正しい形式のJSONかどうかを確認します。必須フィールド、型、形式のチェックにはJSON Schema Validatorが必要ですが、このツールには含まれていません。
エラーが1つしか表示されないのはなぜですか?
最初の構文エラーが起きると、パーサーは作成者の意図を判断できないため、それ以降の「エラー」は最初のエラーに起因することがよくあります。表示された問題を修正すると、次のエラーがあればすぐに表示されます。
コメントや末尾のカンマが有効になることはありますか?
JSONでは使えません。一部のエディターの設定ファイルで使われるJSON5やJSONCなどの形式ではコメントを使用できますが、標準のJSONパーサーでは拒否されるため、ここではエラーとして表示されます。
42や「hello」のような単一の値も有効なJSONですか?
はい。RFC 7159以降では、オブジェクトや配列に限らず、あらゆるJSON値をルートにできます。ただし、古いツールやAPIの中には、最上位にオブジェクトまたは配列を要求するものもあります。
エディターの列番号と異なることがあるのはなぜですか?
列番号は、JavaScriptが文字列の長さを数える方法と同じく、UTF-16コード単位で数えます。絵文字や一部の珍しい文字は2として数えられます。タブは1列として数えられますが、エディター上では幅が広く表示される場合があります。
プライバシー
検証はすべてブラウザー内で実行されます。貼り付けたり開いたりしたJSONがアップロード、保存されたり、アクセス解析に含まれたりすることはありません。