You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 7 HttpClient.put请求自动移除undefined属性的原因问询

问题原因说明

该现象属于HttpClient的预期正常行为,不存在漏洞,核心逻辑来源于两层约定:

  • JSON 原生语法规范不支持undefined作为合法值,仅兼容null、布尔值、数字、字符串、数组、对象几类数据类型,序列化时遇到undefined默认执行跳过处理
  • 绝大多数HttpClient(包括Angular HttpClient、Axios等常见封装)发送JSON请求体前,都会默认调用JSON.stringify()处理传入的对象,而该方法的原生规则就是会自动忽略值为undefined的对象属性、函数类型属性、Symbol类型属性,最终呈现的效果就等价于该属性被删除。

如果需要在请求体中保留该属性键名,只需将属性值从undefined替换为null即可,序列化后会正常保留键名,值为null符合JSON规范要求。

验证示例

你可以直接在浏览器控制台运行以下代码复现该逻辑:

const demo = { name: "test", age: undefined, gender: null }
console.log(JSON.stringify(demo))
// 输出结果为 {"name":"test","gender":null},值为undefined的age属性直接被移除

内容的提问来源于stack exchange,提问作者Sleeper9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:15:04