【问题标题】: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。

还有其他方法吗?

谢谢

【问题讨论】:

  • 如果没有特定键的数据,可以遍历对象并添加n/a!
  • 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)

      【讨论】:

        猜你喜欢
        • 2013-03-31
        • 2016-09-23
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        • 2021-03-18
        • 1970-01-01
        相关资源
        最近更新 更多