仕様と根拠
パスの書き方(JSON Pointer)
RFC 6901 は、JSON の中の場所を、/ で始まる参照トークンをつないだ文字列で表すとしています。項目名の中の ~ は ~0、/ は ~1 と書きます(a/b という項目名は /a~1b)。配列の要素は先頭を 0 とする添字で、全体を指すときは空の文字列です。このツールでは全体を(全体)と表示します。
差の判定
オブジェクトは項目名ごと、配列は同じ位置の添字ごとに比べます。片方にしかない項目や、右の配列の末尾に増えた要素は追加、左にしかないものは削除です。同じ種類の値で中身が違えば変更、値の種類(RFC 8259 3 節の文字列・数値・真偽値・null・配列・オブジェクト)が変わっていれば型の変化とし、それ以上は中を比べません。オブジェクトの項目の並び順は差になりません。
構文エラーのとき・注意点
左右どちらかの JSON が RFC 8259 の文法に合わないと、比べられません。エラーが出た側と、何行目の何列目かを示します。同じオブジェクトに同じ項目名が重複しているときは、最後の値だけで比べて警告します。配列の途中への挿入があると、それ以降の要素は変更として並ぶので、指摘で知らせます。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| RFC 6901 JavaScript Object Notation (JSON) Pointer | 2026年10月28日 | 3 節(構文と ~0・~1 のエスケープ)・4 節(評価。配列の添字は先頭ゼロなしの数字) |
| RFC 8259 The JavaScript Object Notation (JSON) Data Interchange Format | 2026年10月28日 | 3 節(値の種類)・4 節(オブジェクトの項目と重複)・6 節(数) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 配列は添字(位置)ごとに比べます。要素の順序が入れ替わっても同じ内容とみなす比較や、id による要素の突き合わせはしません。
- 数は 2 の 53 乗を超える整数や、桁数の多い小数では、数として等しいかの判定が正確でないことがあります。そのときは「数として等しい値は同じとみなす」を外して、書かれた文字で比べてください。
- RFC 6902(JSON Patch)の形式の出力や、パッチを適用した結果の生成はしません。違いの一覧だけです。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
ご利用にあたって
- 比較の対象は JSON の構文と値の型・中身に限ります。項目の意味や、変更が正しいかどうかは判断しません。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。