JSONバリデーター
任意のJSONドキュメントを貼り付けると、RFC 8259に照らして問題なくパースできるかを確認できます。無効な入力では、正確な問題点(配列の最後の要素のあとの末尾カンマ、引用符のないキー、閉じていない文字列、JSONがダブルクォートを要求する場所のシングルクォート、不正なエスケープシーケンスなど)に加えて、パーサーが処理を諦めた行と列が返されます。APIレスポンス、設定ファイル、チームメイトが手作業で編集したpackage.json、コードジェネレーターの出力をデバッグするときに便利です。
JSON検証のしくみ
-
1
JSONを貼り付ける
ペイロード、設定ファイル、APIレスポンスを貼り付けます。空白は問題ありませんが、タブやコメントは不可です(純粋なJSONにはコメントがありません)。
-
2
厳格なRFC 8259パーサーでパース
バリデーターは仕様が禁じるものをすべて拒否します。末尾カンマ、引用符のないキー、シングルクォート、`undefined`、16進数などです。
-
3
エラーを読む
失敗すると、パーサーのメッセージとおおよその位置が表示されます。問題の文字へ直接たどり着くのに十分な情報です。
-
4
修正して再検証
問題を修正し、もう一度貼り付けて、コミットや送信の前にドキュメントが有効であることを確認します。
厳格なJSONで許されるもの、許されないもの
「ほぼJSON」と呼べる形式は数多く存在します(JSON5、JSONC、HJSON、YAMLに似たハイブリッドなど)。JSON仕様そのものは小さく厳格で、このバリデーターはあなたのドキュメントが厳格なパーサーを通過できるかを教えてくれます。これは下流のほとんどのシステムが実際に動かしているものです。
多くの人がつまずくルール
| ルール | 有効 | 無効 |
|---|---|---|
| キーはダブルクォートの文字列であること | {"a": 1} |
{a: 1} |
| 文字列はダブルクォートのみ | "hello" |
'hello' |
| 末尾カンマは不可 | [1, 2, 3] |
[1, 2, 3,] |
| コメントは不可 | (なし) | // comment または /* */ |
数値: 先頭の+不可、.5不可 |
0.5 |
+1, .5 |
| 予約リテラルのみ | true, false, null |
undefined, NaN |
| UTF-8エンコーディング | Unicodeの文字列 | 不正なバイト列 |
よくあるエラーとその意味
- 「Unexpected token
}」、閉じ波括弧の前に末尾カンマがあります。 - 「Expected property name」、キーが引用符で囲まれていないか、先頭キーの引用符を忘れています。
- 「Unexpected end of input」、開いた
{または[が閉じられていません。括弧の数を数えてください。 - 「Bad control character」、文字列リテラル内にタブ、改行、その他の制御バイトが含まれています。
\tや\nなどとしてエスケープしてください。 - 「Duplicate key」、厳密にはJSON仕様のエラーではありません(仕様では一意であるべき(SHOULD)とされています)が、多くのバリデーターが警告します。本バリデーターはこれを致命的な失敗ではなく注意として扱います。
より緩い形式が必要な場合
- JSON5は末尾カンマ、コメント、シングルクォートを許可します。それが目的の形式なら、JSON5パーサーを使ってください。
- JSONC(コメント付きJSON)はVS Codeの設定が使う形式です。厳格なパース前にコメントを除去してください。
- YAMLは別の形式です。「ただインデントしたJSON」だと思い込まないでください。
ヒント
- コミット前に検証する。
package.jsonやCI設定のタイプミスは、誰かが気づくまでビルド全体を壊します。 - 検証後に整形することで、レビューの差分が読みやすくなります。1行のJSONファイルは有効ですが、レビューには苦痛です。
- 大きなペイロードにはストリーミング検証を使います(たとえばコマンドラインの
jq)。ブラウザ内パースは数MBを超えると苦しくなります。
よくある質問
このツールは構文的な妥当性のみを確認します。つまり整形式のJSONかどうかです。構造的なルール(必須フィールド、列挙値、文字列長など)には、JSON Schemaバリデーターを使ってください。この2ステップは相補的で、そもそも有効なJSONでないドキュメントにSchema検証をかけても意味がありません。
標準JSONにコメントがないからです。//や/* */は常識的な拡張(JSONC、JSON5)ですが、純粋なJSONはそれらを拒否します。厳格なコンシューマーへ送る前にコメントを除去するか、スタック全体でJSON5を採用してください。
厳格なJSONでは無効です。仕様は有限の数値のみを許可します。コンシューマーが欠損データをどう扱うかに応じて、文字列("NaN"、"Infinity")またはnullとしてシリアライズしてください。
いいえ。検証はブラウザ内で実行されるため、貼り付けたペイロードはページから出ません。機密の設定ファイルや認証情報を含むAPIレスポンスにも安全です。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
JavaScript圧縮ツール
変数名のリネーム、空白の削除、デッドコードの除去、定数畳み込みでJavaScriptを圧縮し、より小さなバンドルを作成します。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
EditorConfig ジェネレーター
インデントのスタイルとサイズ、改行コード、文字コード、空白ルールを指定して .editorconfig ファイルを生成し、IDE やエディタをまたいで書式を統一できます。
このツールは他の言語でも利用できます
- JSON Validator [ID]
- Trình kiểm tra JSON [VI]
- Validador JSON [ES]
- Validateur JSON [FR]
- JSON 검사기 [KO]
- JSON-validator [NL]
- JSON-validator [SV]
- ตัวตรวจสอบความถูกต้องของ JSON [TH]
- مدقّق JSON [AR]
- JSON-Validator [DE]
- Walidator JSON [PL]
- Validador JSON [PT]
- Validator JSON [IT]
- Валидатор JSON [RU]
- JSON Doğrulayıcı [TR]
- JSON 校验器 [ZH]
- JSON Validator [EN]