Restring

JSON比較

2つのJSONを整形しながら構造差分を確認できるツール。APIレスポンス、設定ファイル、ログの比較でキー順に惑わされず中身の違いを確認できる。

使い方

  1. JSON AとJSON Bへ比較対象を貼り付ける。
  2. 構文エラーがある場合はエラーメッセージを確認する。
  3. 整形済みJSONと構造一致・不一致を確認する。

JSON比較

構造一致

{
  "name": "Restring",
  "tools": [
    "diff"
  ]
}
{
  "tools": [
    "diff"
  ],
  "name": "Restring"
}

こんな用途に

  • APIレスポンスの変更前後を比較したいとき。
  • 設定JSONや翻訳JSONの差分を確認したいとき。
  • キー順の違いを除外し、値や構造の違いだけ確認したいとき。

仕組み

  • JSON.parseで構文検証し、成功した値をインデント付きで表示。
  • オブジェクトのキーを再帰的にソートしてから比較するため、キー順だけの違いは無視。

確認ポイント

  • まず構文エラーを解消してから比較すると、構造差分を正確に見られる。
  • 配列の順序は意味を持つため、並び替えがあるJSONは結果の読み方に注意が必要。

手元でやるには

キー順を揃えて比較

必要環境: jq、diff、bash/zshなどプロセス置換に対応したシェル
diff -u <(jq -S . a.json) <(jq -S . b.json)

関連ツール

よくある質問

JSONのキー順が違う場合も差分になる?

オブジェクトのキー順は揃えて比較するため、キー順だけの違いは差分として扱わない。

JSON構文エラーも確認できる?

JSON.parseで検証し、構文エラーがある場合は比較前にエラー内容を表示する。