0

如何将其转换为 JS 对象:

{"info":["Image has been added"],"success":["No success Sorry!"]}

JSON.parse 抛出一个错误并说 " 不是有效的 JSON。我是 JS 新手,不知道如何处理这个问题。

我正在使用 express 的 connect-flash 将 flash 消息传输到客户端。为此,我使用以下代码:

if Object.keys(locals.flashes).length !== 0
    script.
      flashArr="#{JSON.stringify(locals.flashes)}"

在客户端,对象的表示不是有效的 JSON。我该如何处理。

4

2 回答 2

2

如何将其转换为 JS 对象?

如果我这样尝试,它会返回我有效的 JS 对象。我只是使用String.prototyp.replace全局替换"它,然后像这样使用JSON.parse()解析它""

invalid_data = '{"info":["Image has been added"],"success":["No success Sorry!"]}';
valid_data = invalid_data.replace(/"/g, '"');
console.log(JSON.parse(valid_data));

于 2018-05-02T03:13:12.107 回答
0

正如建议的那样,您需要将 HTML 实体解析为字符,即转换"". 最简单的方法是使用正则表达式:

var str = '{"info":["Image has been added"],"success":["No success Sorry!"]}';

var obj = JSON.parse(str.replace(/"/g,'"'));
console.log(obj);

当然,如果代码中有其他 HTML 实体,最好使用内置的 HTML 解析器:

var str = '{"info":["Image has been added"],"success":["No success Sorry!"]}';

var el = document.createElement('div');
el.innerHTML = str;

var obj = JSON.parse(el.textContent);
console.log(obj);

但对于单个实体,替换可能更快、更有效。

于 2018-05-02T03:18:02.673 回答