【问题标题】:Convert object to string and fill NA in case value is not present javascript将对象转换为字符串并在不存在值的情况下填充 NA javascript
【发布时间】:2021-12-09 02:28:49
【问题描述】:
我正在尝试将字符串转换为对象并填充 NA 以防该键的值不存在。
我有一个这样的字符串。
let stroy = {"Name":"","Id":"abc", "test": "" "}
有了这个
JSON.Parse(stroy)
我可以转换,但是如果没有值,如何填写 NA。
还有其他方法吗?
谢谢
【问题讨论】:
-
-
JSON.parse(注意小写P)不会将您显示的内容转换为对象。您已经展示的 is 是一个对象,它是一个对象字面量,而不是一个字符串。 JSON 是一种用于数据交换的文本符号。 (More here.) 如果您正在处理 JavaScript 源代码,而不是处理 string,那么您就不是在处理 JSON。
标签:
javascript
reactjs
json
lodash
【解决方案1】:
您可以使用Object.keys() 和Array.map() 创建键/值对列表。如果该值为空,我们会将其替换为默认值,在本例中为“NA”。
我们使用Object.fromEntries() 转换回一个对象。
let stroy = {"Name":"", "Id":"abc", "test": ""};
const defaultValue = 'NA';
let result = Object.fromEntries(Object.keys(stroy).map(key => {
return [key, stroy[key] || defaultValue ];
}));
console.log('Result:', result);
【解决方案2】:
您的对象中似乎有一个额外的"。
let stroy = {"Name":"","Id":"abc", "test": ""}
let stringStroy = JSON.stringify(stroy).replaceAll('""','"NA"')
console.log(JSON.parse(stringStroy))
【解决方案3】:
解析后可以循环对象。
循环时只需检查是否在该键中找到数据
let stroy = `{"Name":"","Id":"abc", "test": ""}`
stroy = JSON.parse(stroy)
for (var key in stroy) {
if(!stroy[key]) {
stroy[key] = 'NA'
}
}
console.log(stroy)