JSON / presence / handoff

JSONの「ない」と空の値を分ける

null、空文字、欠落、空配列・空オブジェクトを同じ値として扱わず、受け渡し前の判断を合成caseで確認します。ユーザーのJSONは受け取りません。

presenceの違い

値が空なのか、項目そのものが存在しないのかで、更新・既定値・必須判定は変わります。

missing ≠ null ≠ "" ≠ [] ≠ {}
case確認する意味
missing-field項目が存在せず、未指定・既定値の候補。
null-value項目は存在するが、値が明示的にnull。
empty-string文字列として存在し、長さだけが0。
empty-array配列として存在し、要素数が0。
empty-objectオブジェクトとして存在し、キー数が0。
explicit-value値が存在し、更新・照合の対象になる。

確認の順番

  1. 項目の存在有無を先に確認する。
  2. 存在する場合はnullか型付きの空かを分ける。
  3. 受け取り側の既定値・必須条件を別に記録する。
  4. 曖昧な入力を推測で補わず、確認票を共有する。

このページは合成fixtureだけを扱います。upload、外部通信、保存領域、解析対象のユーザーJSONはありません。