问题场景
同一个备注字段,传 null、空字符串或者不传,最后都在页面上显示为空。它们在更新接口里应该如何区分?
排查与解法按顺序复现、定位和验证
先定义业务含义
同一个字段缺失、显式为 null、传空字符串是三个不同输入。它们如何影响业务,需要接口约定;JSON 本身不会替你决定“null 就是删除”。
对比三个请求
以下语义仅是一个 PATCH 接口的约定示例:缺失表示不修改,null 表示清空,空字符串表示保存空文本。实际接口应以文档和处理逻辑为准。
{}
{
"remark": null
}
{
"remark": ""
}避免默认值覆盖信息
使用 || 会把 0、false、空字符串一起当成无值;?? 只对 null 和 undefined 生效,但也会合并这两种情况。需要区分字段是否存在时,检查对象自身属性。
if (Object.hasOwn(payload, "remark")) {
// 进入更新分支,再根据 null 或字符串执行明确规则
}建立联调用例
分别提交缺失、null、空字符串、空白字符串、正常文本和类型错误。核对校验、更新 SQL、返回结果与审计记录;不要只看页面最终渲染成了一样的空白。