接口返回 {a: null} 和 {} 是两回事。

null:明确表示「值是空」
缺失:表示「没有这个字段」

代码里不加区分,就会出问题。比如更新操作,null 应该清空字段,缺失应该保持不变。

Agent 写代码时经常不区分,默认都当空处理。

规范:定义清楚每个字段的语义,尤其是可选字段。用 PATCH 语义时更要明确。

我在接口文档里固定写一句:字段缺失表示不修改,显式 null 表示清空。

主楼