仕様と根拠
重複の数え方
オブジェクトごとに、項目名を文字に直した結果(\u0061 は a と同じ)で比べ、2 回以上現れるものを重複とします。別のオブジェクトに同じ名前があるのは重複ではありません。RFC 8259 4 節は、名前は一意であるべき(SHOULD)とし、重複したときの読み込み側の挙動は予測できない(最後だけを採る・拒否する・すべて残すなどが混在する)としています。
警告と情報の分け方
重複した項目の値がすべて同じなら情報、値が違うなら警告にします。値が違うと、読み込む側によって採用される値が変わり、意図しない設定や金額が使われるおそれがあるためです。値の比較は空白を除いた書かれ方どおりで、1 と 1.0 は別の値として扱います。
構文エラーのとき
RFC 8259 の文法に沿って読み、構文が壊れていると重複は調べられません。最初に見つかったエラーの位置を何行目の何列目かで示します。整形や、より詳しい構文エラーの説明が必要なときは、整形用の JSON ツールで直してから貼り直します。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format | 2026年10月28日 | 4 節(オブジェクトの名前は一意であるべき・重複時の挙動は予測できない)・7 節(文字列のエスケープ)・8.3 節(文字列の比較) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- JSON Schema などによる内容(項目の有無・型・値の範囲)の検査や、JSON の整形はしません。重複の検出に絞っています。
- 構文エラーは最初の 1 か所だけを示し、その場合は重複を調べません。直したあとに貼り直してください。
- JSON Lines(1 行に 1 つの JSON)や、コメント・末尾カンマを許す JSON5・JSONC は、JSON としてはエラーになります。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
ご利用にあたって
- 検査は JSON の構文と項目名の重複に限ります。読み込む側のソフトが独自の制限や挙動を持つ場合があります。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。