キー順と1/1.0の違いは同じ値
入力と設定
左:{"a":1,"items":[1,2],"enabled":true}
右:{"enabled":true,"items":[1,2],"a":1.0}期待する結果
一致 / 追加・削除・値変更・型変更はすべて0
2つのJSONのキー・値・型を比較し、追加・削除・変更の位置を確認。大きな数値を丸めず、結果をJSONでコピー・保存できます。
各入力はUTF-8で2MB、100,000個の値(オブジェクト・配列を含む)・入れ子32段階まで。変更10,000件、出力5MBまで。入力・ファイル名・結果は保存や送信をしません。
オブジェクトのキー順やインデントだけの違いは数えません。文字列は大文字・小文字、空白、Unicodeの文字を区別します。文字列の "1" と数値の 1 は型の変更です。
数値の 1、1.0、1e0 は同じ値とします。-0 と0も同じです。大きな整数や小数はJavaScriptの数値へ丸めずに比較します。指数は先頭ゼロを除き128桁までです。
配列は同じ番号の要素を照合します。並べ替えや途中への挿入も、その位置の値の変更として数えます。IDによる行の照合や、移動の検出は行いません。
追加・削除された配列やオブジェクトは、その部分を1件として表示します。型が変わった部分も1件です。結果のpathはJSON Pointerで、空文字は全体、/は~1、~は~0で表します。
実例は追加1・削除1・値変更1・型変更1です。before・afterは元のJSON値で、数値の桁や指数表記を保ちます。元の空白やエスケープ表記は保持せず、入力を書き換えません。
処理はブラウザー内のWorkerで行い、取り消すで中断できます。入力編集・ファイル差し替え・リセットも進行中の比較を止めます。ファイルの読み込み後は比較するを押してください。
出力はUTF-8・BOMなし。表示は先頭20,000文字までですが、コピー・保存は全件です。上限超過では部分結果を保存できません。比較し直すまで古い結果の操作はできません。
オブジェクトの順序と数値表記、配列の順序と値の型を分けて比較します。
「この例を試す」を押すと、上の入力と設定が例の内容に切り替わり、処理を実行します。「元の入力へ戻す」は1回ごとに直前の入力と設定を復元します。複数の例を試した場合は、戻す操作を繰り返すと最初の入力へ戻れます。ページを閉じるとこの履歴は失われます。
左:{"a":1,"items":[1,2],"enabled":true}
右:{"enabled":true,"items":[1,2],"a":1.0}一致 / 追加・削除・値変更・型変更はすべて0
左:{"items":[1,2],"flag":false}
右:{"items":[2,1],"flag":"false"}値変更2:/items/0、/items/1 型変更1:/flag / 追加0・削除0
オブジェクトはキー名で、配列は添字で対応させます。配列の移動を探す機能ではないため、1と2を入れ替えると2つの位置の変更になります。数値1と1.0は等価ですが、真偽値falseと文字列"false"は型が違います。
各入力2MB・出力5MB、100,000値・深さ32・変更10,000件まで。数値の指数は先頭0を除き128桁までです。重複キーは拒否。空白差の行単位比較や配列の集合比較ではありません。画面は先頭20,000文字で保存は全文。復元は両方のJSONとファイルを戻し、進行中の例のWorkerは取り消します。
検証根拠:キー対応・添字対応・型から0件と値2/型1を独立に数えます。ファイル保持、実Workerと保存、未完の例から元入力へ戻した際の遅延結果無視を確認します。
違います。nullは存在する値です。キーがなくなれば削除、追加されれば追加です。false、0、空文字もそれぞれの値として比較します。
意図しない項目の欠落を避けるため、どちらの入力でも重複キーはエラーにします。不正なJSON・UTF-8も比較を止めます。
できます。equalがtrue、changesが空の配列のJSONレポートになります。両方の入力が上限内の有効なJSONであることも確認します。
ツール名と公開URLだけを共有します。入力した内容や処理結果は含まれません。
残したい内容は、先に保管してください。このツールの入力内容・結果は自動保存されません。ページの更新・終了や、入力を消す操作・リセットで失われる場合があります。
お気に入り・表示言語は作業データとは別に保存され、サイトデータの削除で失われる場合があります。端末に保存済みのファイルは、ツールのリセットやサイトデータの削除では消えません。