JSON の差分のパス表示

2 つの JSON の違いを、場所(パス)ごとに並べる。

変更前と変更後の 2 つの JSON を貼り付けると、違いのある場所を JSON Pointer(/user/name のような書き方)で一覧にします。追加・削除・変更・型の変化に分け、左右の値を並べて示します。項目の並び順や空白の違いは差とみなしません。入力はブラウザの中だけで処理します。

ツールを使う 入力例と結果

2 つの JSON の差をパスごとに一覧する

入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。

結果

エラー 0 件・警告 0 件・情報 0 件

指摘(エラー・警告・情報)

指摘はありません。

判定差あり(3 か所)
追加1 か所
削除1 か所
変更1 か所
型の変化0 か所

差のある場所の一覧

差のある場所の一覧
パス(JSON Pointer)種別左の値右の値
/price変更100120
/stock削除5
/color追加"red"

初期表示は入力例「価格が変わり、項目が増減した」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。

ご利用にあたって

  • 比較の対象は JSON の構文と値の型・中身に限ります。項目の意味や、変更が正しいかどうかは判断しません。
  • 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。

使い方

  1. 左の欄に変更前の JSON、右の欄に変更後の JSON を貼り付けます。ファイルを選んで読み込むこともできます。
  2. 数の書き方(1 と 1.0 など)の違いも差として見たいときは、「数として等しい値は同じとみなす」のチェックを外します。
  3. 表で、差のある場所(パス)と種別を確かめます。パスは /user/name のように、/ でつないだ JSON Pointer で、配列の要素は 0 から数えた添字です。
  4. 種別が「型の変化」のものは、数値が文字列になったなど、値の種類が変わっています。読み込む側で失敗しやすいので優先して確かめます。

入力例と結果

代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。

入力例と結果の一覧
入力例結果
価格が変わり、項目が増減したエラー 0 件・警告 0 件・情報 0 件
数値が文字列に、文字列が真偽値に変わったエラー 0 件・警告 0 件・情報 0 件
/ や ~ を含む項目名と、配列への追加エラー 0 件・警告 0 件・情報 1 件
項目の順序と空白だけが違うエラー 0 件・警告 0 件・情報 1 件
1 と 1.0 の書き方の違いを差として見るエラー 0 件・警告 0 件・情報 0 件
右の JSON が途中で切れているエラー 1 件・警告 0 件・情報 0 件

このツールでできないこと(制約)

よくある質問

項目の順序が違うだけでも差になりますか?

なりません。RFC 8259 4 節ではオブジェクトは名前と値の組の集まりで、順序に意味を持たせないのが通常です。同じ項目と値があれば、並び順や空白、改行が違っても差なしとして扱います。配列は順序に意味があるので、位置ごとに比べます。

パスの中の ~0 や ~1 は何ですか?

RFC 6901 で、項目名の中の ~ と / を表す書き方です。/ はパスの区切りと区別できなくなるため ~1、~ は ~0 と書きます。たとえば a/b という項目名は /a~1b、a~b という項目名は /a~0b になります。

貼り付けた JSON はどこかに送られますか?

送られません。比較はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。社外秘の設定でも内容を送信しませんが、共用の端末では使い終わったらページを閉じてください。