仕様と根拠
読み方
RFC 8259 の文法どおりに 1 文字ずつ読みます。空白として認めるのは半角スペース・タブ・改行(LF・CR)だけ、リテラルは小文字の true・false・null だけ、数値は先頭に 0 や + を付けない 10 進数だけ、文字列は二重引用符で囲み、制御文字はエスケープが必要、というのが主な規則です。
エラーの位置と原因
最初に見つかった構文エラーで止め、その位置を何行目の何文字目(1 から数える)で示し、前後 12 文字を添えます。末尾のカンマ、一重引用符、コメント、引用符のない項目名、True や None など他の言語の書き方、閉じかっこの不足は、よくある原因として個別の説明を出します。
警告にするもの
同じオブジェクトの中で項目名が重複している場合(RFC 8259 4 節は一意であるべきとし、重複時の扱いは読み込む側で異なる)と、2 の 53 乗から 1 を引いた値を超える整数(倍精度の数値で読むと丸められる)を警告にします。数値は元の表記のまま出力し、変換による桁落ちを起こしません。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format | 2026年10月28日 | 2 節(空白)・3 節(リテラル)・4 節(項目名の重複)・6 節(数値)・7 節(文字列とエスケープ)・8.1 節(BOM) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- JSON Schema などによる内容(項目の有無・型・値の範囲)の検査はしません。構文だけを確かめます。
- 構文エラーは最初の 1 か所だけを示します。直したあとに貼り直すと、次のエラーが見つかることがあります。
- JSON Lines(1 行に 1 つの JSON)や、コメント・末尾カンマを許す JSON5・JSONC は、JSON としてはエラーになります。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
ご利用にあたって
- 検査は JSON の構文(RFC 8259)に限ります。読み込む側のソフトが独自の制限を持つ場合があります。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。