转换为JS对象

时间:2018-05-02 02:44:02

标签: javascript json connect-flash

如何将其转换为JS对象:

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

JSON.parse会抛出错误并说& quot不是有效的JSON。我是JS的新手,无法弄清楚如何处理这个问题。

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

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

在客户端,Object的表示形式不是有效的JSON。我该怎么办呢。

2 个答案:

答案 0 :(得分: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));




答案 1 :(得分: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);

但对于单个实体, replace 可能更快,更有效。