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

JavaScript 将JSON字符串转对象且空值填充NA的实现方法

实现方法

首先你提供的示例JSON存在语法错误,test字段末尾多了一个多余的双引号,修正后的合法字符串格式如下:

let stroy = '{"Name":"","Id":"abc","test":""}';

你可以根据实际需求选择以下两种实现方案:

方案1:需要为所有预设的必填键填充NA(含原JSON中不存在的键)

如果提前明确要处理的所有键名,哪怕原JSON中没有对应键,也要补充键并赋值为NA,可以遍历预设键列表做判断:

// 步骤1:定义所有需要校验的键列表
const allKeys = ["Name", "Id", "test", "address", "phone"];
// 步骤2:转换JSON字符串为对象
const resObj = JSON.parse(stroy);
// 步骤3:遍历替换空值/补全缺失键
allKeys.forEach(key => {
  // 匹配规则:键不存在、值为空字符串、值为null、值为undefined时都替换为NA
  if (!resObj.hasOwnProperty(key) || [null, undefined, ""].includes(resObj[key])) {
    resObj[key] = "NA";
  }
});

方案2:仅处理原JSON中已存在的键的空值

如果不需要新增原JSON没有的键,只需要把现有键的空值替换为NA,可以直接遍历转换后的对象,也可以用JSON.parse的回调函数直接处理:

// 写法1:先转对象再遍历替换
const resObj = JSON.parse(stroy);
for (let key in resObj) {
  if ([null, undefined, ""].includes(resObj[key])) {
    resObj[key] = "NA";
  }
}

// 写法2:用JSON.parse的回调直接处理
const resObj = JSON.parse(stroy, (key, value) => {
  return [null, undefined, ""].includes(value) ? "NA" : value;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:15:02