JSON の差分のパス表示
2 つの JSON の違いを、場所(パス)ごとに並べる。
変更前と変更後の 2 つの JSON を貼り付けると、違いのある場所を JSON Pointer(/user/name のような書き方)で一覧にします。追加・削除・変更・型の変化に分け、左右の値を並べて示します。項目の並び順や空白の違いは差とみなしません。入力はブラウザの中だけで処理します。
2 つの JSON の差をパスごとに一覧する
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| 判定 | 差あり(3 か所) |
|---|---|
| 追加 | 1 か所 |
| 削除 | 1 か所 |
| 変更 | 1 か所 |
| 型の変化 | 0 か所 |
差のある場所の一覧
| パス(JSON Pointer) | 種別 | 左の値 | 右の値 |
|---|---|---|---|
| /price | 変更 | 100 | 120 |
| /stock | 削除 | 5 | |
| /color | 追加 | "red" |
初期表示は入力例「価格が変わり、項目が増減した」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 比較の対象は JSON の構文と値の型・中身に限ります。項目の意味や、変更が正しいかどうかは判断しません。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。
使い方
- 左の欄に変更前の JSON、右の欄に変更後の JSON を貼り付けます。ファイルを選んで読み込むこともできます。
- 数の書き方(1 と 1.0 など)の違いも差として見たいときは、「数として等しい値は同じとみなす」のチェックを外します。
- 表で、差のある場所(パス)と種別を確かめます。パスは /user/name のように、/ でつないだ JSON Pointer で、配列の要素は 0 から数えた添字です。
- 種別が「型の変化」のものは、数値が文字列になったなど、値の種類が変わっています。読み込む側で失敗しやすいので優先して確かめます。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 価格が変わり、項目が増減した | エラー 0 件・警告 0 件・情報 0 件 |
| 数値が文字列に、文字列が真偽値に変わった | エラー 0 件・警告 0 件・情報 0 件 |
| / や ~ を含む項目名と、配列への追加 | エラー 0 件・警告 0 件・情報 1 件 |
| 項目の順序と空白だけが違う | エラー 0 件・警告 0 件・情報 1 件 |
| 1 と 1.0 の書き方の違いを差として見る | エラー 0 件・警告 0 件・情報 0 件 |
| 右の JSON が途中で切れている | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- 配列は添字(位置)ごとに比べます。要素の順序が入れ替わっても同じ内容とみなす比較や、id による要素の突き合わせはしません。
- 数は 2 の 53 乗を超える整数や、桁数の多い小数では、数として等しいかの判定が正確でないことがあります。そのときは「数として等しい値は同じとみなす」を外して、書かれた文字で比べてください。
- RFC 6902(JSON Patch)の形式の出力や、パッチを適用した結果の生成はしません。違いの一覧だけです。
- ファイルは UTF-8 として読みます。Shift_JIS などほかの文字コードのファイルは文字化けすることがあります。
よくある質問
項目の順序が違うだけでも差になりますか?
なりません。RFC 8259 4 節ではオブジェクトは名前と値の組の集まりで、順序に意味を持たせないのが通常です。同じ項目と値があれば、並び順や空白、改行が違っても差なしとして扱います。配列は順序に意味があるので、位置ごとに比べます。
パスの中の ~0 や ~1 は何ですか?
RFC 6901 で、項目名の中の ~ と / を表す書き方です。/ はパスの区切りと区別できなくなるため ~1、~ は ~0 と書きます。たとえば a/b という項目名は /a~1b、a~b という項目名は /a~0b になります。
貼り付けた JSON はどこかに送られますか?
送られません。比較はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。社外秘の設定でも内容を送信しませんが、共用の端末では使い終わったらページを閉じてください。