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

为何undefined属性未被添加至对象?如何强制添加?

JSON序列化丢失undefined属性的原因与解决办法

为什么值为undefined的属性没出现在最终JSON里?

JSON本身的规范不支持undefined这个值,JSON.stringify()在处理对象时,会自动忽略值为undefined、函数或Symbol类型的属性。其实你代码里的object对象是包含那些undefined属性的,只是序列化后看不到——你可以直接console.log(object)验证这一点,控制台会显示所有属性,包括值为undefined的。

怎么强制把这些属性加入JSON?

给你几个实用的解决方法:

方法1:用JSON.stringify的replacer参数自定义序列化规则

通过替换函数把undefined转成JSON支持的null(或者你需要的其他值,比如字符串"undefined"):

let json = JSON.stringify(object, (key, value) => {
  return value === undefined ? null : value;
});

方法2:构建对象时直接替换undefined为null

在给object赋值的时候,就把undefined换成null,后续序列化自然会保留属性:

let object = {};
Object.keys(this.graphQL.body).forEach((key) => {
    object[key] = this[key] ?? null; // 空值合并运算符,undefined时赋值为null
})
let json = JSON.stringify(object);

方法3:用Object.fromEntries简化对象构建(ES6+环境可用)

更简洁的写法,一次性处理所有属性:

const object = Object.fromEntries(
  Object.keys(this.graphQL.body).map(key => [key, this[key] ?? null])
);
const json = JSON.stringify(object);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:35:29