JSON の重複キーの検出
JSON の同じ項目名の重複を、場所と値つきで洗い出す。
JSON を貼り付けると、同じオブジェクトの中で項目名(キー)が重複している箇所を、場所(パス)・回数・行と列・それぞれの値の一覧にします。標準の読み込みでは黙って片方が消える重複を見つけます。入力はブラウザの中だけで処理します。
JSON を貼り付けて重複した項目名を探す
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 1 件・情報 0 件
指摘(エラー・警告・情報)
- 警告 1 行 2 列(ほか 1 行 20 列) $ に項目名「id」が 2 回あります。値が違うため、読み込む側によって後の値だけを使う・エラーにする・すべて残すと分かれます(RFC 8259 4 節)。不要な方を消すか、名前を変えてください。
| 判定 | 重複あり(1 件の項目名) |
|---|---|
| 調べたオブジェクト | 1 個(項目名 合計 3 個) |
| 重複のあるオブジェクト | 1 個 |
| 値が食い違う重複 | 1 件 |
重複した項目名の一覧
| 場所(パス) | 項目名 | 回数 | 位置(行:列) | 値(先頭の 28 文字まで) |
|---|---|---|---|---|
| $ | id | 2 回 | 1:2 、 1:20 | 1 つ目 1 | 2 つ目 2 |
初期表示は入力例「id が 2 回出てきて値が違う」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 検査は JSON の構文と項目名の重複に限ります。読み込む側のソフトが独自の制限や挙動を持つ場合があります。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。
使い方
- 重複を調べたい JSON をテキスト欄に貼り付けるか、JSON ファイルを選びます。
- 大文字・小文字を区別せずに読む環境(一部の言語のライブラリなど)へ渡すときは、「大文字・小文字だけが違う項目名も同じとみなす」にチェックを入れます。
- 表で、重複した項目名の場所(パス)・回数・行と列・それぞれの値を確かめます。値が違う重複は警告になり、読み込む側によって採用される値が変わります。
- 不要な項目を消すか名前を変えて貼り直し、「重複なし」になったことを要約で確かめます。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| id が 2 回出てきて値が違う | エラー 0 件・警告 1 件・情報 0 件 |
| 入れ子の中の重複と、値が同じ重複 | エラー 0 件・警告 1 件・情報 1 件 |
| エスケープで書き方を変えた同じ名前 | エラー 0 件・警告 1 件・情報 0 件 |
| 別のオブジェクトの同名は重複ではない | エラー 0 件・警告 0 件・情報 1 件 |
| 大文字・小文字だけが違う項目名 | エラー 0 件・警告 0 件・情報 1 件 |
| 末尾のカンマで構文エラーになる | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- JSON Schema などによる内容(項目の有無・型・値の範囲)の検査や、JSON の整形はしません。重複の検出に絞っています。
- 構文エラーは最初の 1 か所だけを示し、その場合は重複を調べません。直したあとに貼り直してください。
- JSON Lines(1 行に 1 つの JSON)や、コメント・末尾カンマを許す JSON5・JSONC は、JSON としてはエラーになります。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
よくある質問
重複したキーがあると何が問題ですか?
RFC 8259 4 節によると、重複したときの扱いは読み込む側で異なり、最後の値だけを採るもの、エラーにするもの、すべて残すものがあります。同じ JSON でも環境によって結果が変わるため、重複は避けるのが安全です。
標準の JSON.parse では重複が見つからないのですか?
多くの環境の標準の読み込みは、重複しても黙って片方の値だけを残し、重複があったことを教えてくれません。このツールは自前で JSON を最初から読み、重複した項目の位置と値をすべて残して一覧にします。
貼り付けた JSON はどこかに送られますか?
送られません。検出はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。社外秘の JSON でも内容を送信しませんが、共用の端末では使い終わったらページを閉じてください。