機能の説明
JSON ドキュメントをキーストロークごとに検査し、壊れている場所を正確に特定します。入力に合わせてバッジが Valid JSON と Invalid JSON を切り替えます。ドキュメントが有効なとき、4 つのセルからなるパネルが、サイズ(UTF-8 バイト数)、最上位の型、キーまたは要素の数、最大ネスト深度を報告します。無効なとき、エラーは行と列を示し、2 つ目のパネルが入力から問題の行を引用します。すべてブラウザーの中でローカルに実行され、貼り付けた内容がどこへも送信されることはありません。
使い方
- JSON を JSON input に貼り付けるか入力します。Sample はデモドキュメント、Clear はボックスを空にします。
- バッジを読みます: Valid JSON(緑)または Invalid JSON(赤)。
- 有効なら、統計パネルを読みます:
- bytes - ドキュメントの UTF-8 サイズであり、文字数ではありません。
- type - array、object、string、number、boolean、null のいずれか。
- keys(オブジェクト)または items(配列)- 最上位のカウントのみ。
- depth - 最大ネスト深度。最上位は 1 として数えます。
- 無効なら
Line X, Column Y: <reason>を読み、その下の引用行を確認します。 - Copy input はテキストを複製します。Copy share link は URL(
?j=...)にエンコードします。
例
{"name":"CosmoDev","free":true,"tools":["json","base64"]}
結果: Valid JSON、57 bytes、型は object、3 keys、depth 3。tools の中の文字列はルートの 2 レベル下にあるため、深度は 3 です。
スカラーも完全な JSON ドキュメントです:
| 入力 | 判定 | 統計 |
|---|---|---|
123 |
Valid JSON | 3 bytes、型 number、depth 1 |
true |
Valid JSON | 4 bytes、型 boolean、depth 1 |
null |
Valid JSON | 4 bytes、型 null、depth 1 |
場所まで特定されたエラー:
{"a": 1}
extra
結果: 理由付きの Line 2, Column 1 で、下のパネルが extra を引用します。
JSON 検証の仕組み
JSON パーサーはドキュメントを左から右に一度読み、その位置に合法的に現れない最初の文字で停止します。ツールはその文字のオフセットを位置に変換します: オフセットより前の改行を数えて行を、最後の改行からの文字数を数えて列を求めます。どちらも 1 始まりなので、Line 2, Column 1 は 2 行目のちょうど先頭を意味します。引用パネルは入力からその行を表示するため、抜粋は常にあなたのドキュメントから来て、汎用テンプレートから来ることはありません。
実際の無効 JSON の大半は、次の 4 つのミスが原因です:
| ミス | 例 | 失敗する理由 |
|---|---|---|
| 末尾カンマ | {"a":1,} |
カンマの後はキーが期待され、} はキーではない |
| シングルクォート | {'a':1} |
文字列とキーは二重引用符を使わなければならない |
| クォートなしキー | {a:1} |
キーは文字列であり、文字列は引用符で囲む |
| コメント | {"a":1} //x |
JSON にはコメントというものが定義されていない |
これらはどれもスタイルの問題ではありません。JSON 文法(RFC 8259)はそれぞれについてちょうど 1 つの書き方だけを許し、パーサーはそれを強制します。この厳格さこそがポイントです。ここで検証を通ったドキュメントは、すべての準拠パーサーで、あらゆる言語で、同一にパースされます。
補足事項
- 最初のエラーのみ: パーサーは最初の問題で停止します。直して再検証すれば、次の問題が現れます。
- エンジン差異: 内部エンジンが位置を報告しない場合でも、判定は生のメッセージを表示します。
- 共有可能: 入力は URL(
?j=...)にエンコードされるため、リンクを開けばまったく同じ表示が再現されます。 - プライベート: 設定、認証情報、API ペイロードにも安全です。
- 関連ツール: JSON Formatter、JSON Minify、JSON ↔ CSV Converter。