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
相关产品推荐
相关产品推荐

