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