【问题标题】:How to convert string to json in Angular?如何在Angular中将字符串转换为json?
【发布时间】:2020-05-13 01:03:42
【问题描述】:

从以下类型的字符串开始:

const json = '{"list":"[{"additionalInformation": {"source": "5f645d7d94-c6ktd"}, "alarmName": "data", "description": "Validation Error. Fetching info has been skipped.", "eventTime": "2020-01-27T14:42:44.143200 UTC", "expires": 2784, "faultyResource": "Data", "name": "prisco", "severity": "Major"}]"}'

如何将其作为 JSON 进行管理?以下方法不起作用

const obj = JSON.parse(json );
unuspected result

如何正确解析它?

总之,我应该提取与第一个项目列表相关的部分,然后解析它包含的 JSON。

【问题讨论】:

  • 您能否添加有关您所期望的信息,因为您的代码接缝很好。
  • 我想提取 json,我应该删除 [] 吗?
  • 好吧,这取决于,您的 json 是一个数组,如果您不想保留该数组,您可以检索第一个元素。 JSON.parse('[{"result":true, "count":42}]')[0].
  • 它已经是一个有效的 JSON 字符串。 “不起作用”怎么办?
  • json 字符串已更新

标签: node.js json angular


【解决方案1】:

您的 JSON 无效。以下是您的 JSON 的有效版本:

const json= {
    "list": [ {
        "additionalInformation": {
            "source": "5f645d7d94-c6ktd"
        },
        "alarmName": "data",
        "description": "Validation Error. Fetching info has been skipped.",
        "eventTime": "2020-01-27T14:42:44.143200 UTC",
        "expires": 2784,
        "faultyResource": "Data",
        "name": "prisco",
        "severity": "Major"
      }
    ]
}

上面已经是一个 JSON 并且再次将其解析为 JSON 会引发错误。

JSON.parse() 解析字符串/文本并将其转换为 JavaScript 对象。字符串/文本应为 JSON 格式,否则将引发错误。

更新: 创建一个函数来清理你的字符串并为JSON.parse()做准备:

cleanString(str) {
    str = str.replace('"[', '[');
    str = str.replace(']"', ']');
  return str;
}

并像这样使用它:

json = this.cleanString(json);
console.log(JSON.parse(json));

演示:

let json = '{"list":"[{"additionalInformation": {"source": "5f645d7d94-c6ktd"}, "alarmName": "data", "description": "Validation Error. Fetching info has been skipped.", "eventTime": "2020-01-27T14:42:44.143200 UTC", "expires": 2784, "faultyResource": "Data", "name": "prisco", "severity": "Major"}]"}';
json = cleanString(json);
console.log(JSON.parse(json));

function cleanString(str) {
	str = str.replace('"[', '[');
	str = str.replace(']"', ']');
  return str;
}

【讨论】:

  • 有没有办法通过执行类似的操作来获取对象:json['list']
【解决方案2】:

从数组括号中删除双引号以使 json 有效:

const json = '{"list":[{"additionalInformation": {"source": "5f645d7d94-c6ktd"}, "alarmName": "data", "description": "Validation Error. Fetching info has been skipped.", "eventTime": "2020-01-27T14:42:44.143200 UTC", "expires": 2784, "faultyResource": "Data", "name": "prisco", "severity": "Major"}]}'

【讨论】:

  • 来自 Maihan 的回答演示
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 2021-01-16
  • 2018-11-01
相关资源
最近更新 更多