tigtools

JSON Validator

JSONを貼り付けて、JSON標準に照らして構文をチェックできます。エラー箇所をマーカーで示し、わかりやすく説明します。

ブラウザー内で動作 登録不要

JSONを貼り付けると、ここに結果が表示されます。

使い方

  1. JSONを入力欄に貼り付けるか、ファイルを開くか、「例を試す」を押してエラーレポートを確認します。
  2. 結果を確認します。有効なJSONの場合は緑色のメッセージが表示され、エラーがある場合は最初のエラー、その行と列、および問題箇所を示すマーカーが表示されます。
  3. ヒントに従ってエラーを修正して、もう一度確認します。入力中も結果は更新されます。
  4. 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がアップロード、保存されたり、アクセス解析に含まれたりすることはありません。