name が消え、price が文字列になった
旧版にあった name が新版で無くなり、price が数値から文字列に変わり、email が増えた典型的な API 更新の例です。欠損 1 件・型変更 1 件・追加 1 件が出ます。
入力
旧版の JSON
{"id":1,"name":"A","price":100}新版の JSON
{"id":1,"price":"100","email":"a@x"}配列の比べ方
全要素をまとめて比べる([] として扱う)
結果
エラー 0 件・警告 2 件・情報 1 件
指摘(エラー・警告・情報)
- 警告 $.name 旧版にあった $.name が新版にありません。この項目を使っている利用側が壊れるおそれがあります。
- 警告 $.price $.price の型が 数値 から 文字列 に変わりました(RFC 8259 の値の型で比較)。
- 情報 $.email 新版に $.email が増えています(旧版にはありません)。
| 判定 | 欠損 1 件・型変更 1 件 |
|---|---|
| 旧版のパス数 | 4 個 |
| 新版のパス数 | 4 個 |
| 欠損 | 1 件 |
| 型変更 | 1 件 |
| 追加 | 1 件 |
| 配列の扱い | 全要素をまとめて([] として)比べる |
構造の差(欠損・型変更・追加)
| パス | 判定 | 旧版の型 | 新版の型 |
|---|---|---|---|
| $.name | 欠損 | 文字列 | (なし) |
| $.price | 型変更 | 数値 | 文字列 |
| 追加 | (なし) | 文字列 |
検算(この結果になる理由)
旧版のパスは $・$.id・$.name・$.price、新版は $・$.id・$.price・$.email です。$.name は新版に無いので欠損、$.price は数値(RFC 8259 6 節)から文字列に変わったので型変更、$.email は新版だけなので追加で、警告 2 件・情報 1 件になります。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 値そのものの違い(金額や文字列の変更)は比べません。構造(項目の有無と型)だけを見ます。値の差分は別の JSON 差分ツールを使ってください。
- 配列をまとめて比べるときは、一部の要素にしか無い項目も「ある」と数えるため、要素ごとの欠損は見つかりません。
- 数値の整数と小数(1 と 1.5)は同じ「数値」です。文字列の中身が日付かどうかなどの意味の違いは見ません。
- JSON Schema や OpenAPI 定義そのものの比較はしません。実際の応答例を貼って比べます。
ご利用にあたって
- 比べるのは貼り付けた応答例の構造だけです。実際の API の仕様や互換性の保証ではありません。
- 大きな JSON はお使いの端末の性能によって処理に時間がかかることがあります。