如果数据包含某些URL,则Javascript无法解析JSON

时间:2015-10-05 22:08:27

标签: javascript json

我有一个有效的JSON:

{"name":"tono","html":"<p><a href=\"http:\/\/someurl.com\">Here<\/a> is the link<\/p>"}  

但是,当我通过javascript解析它时(我使用firefox的控制台)

JSON.parse('{"name":"tono","html":"<p><a href=\"http:\/\/someurl.com\">Here<\/a> is the link<\/p>"}');

我收到此错误

SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 column 36 of the JSON data

这是预期的行为吗? 以及如何正确解析包含URL的JSON?

只是为了获取更多信息,这个有用:

JSON.parse('{"name":"tono","html":"<p><a href=>Here<\/a> is the link<\/p>"}');

Object { name: "tono", html: "<p><a href=>Here</a> is the link</p>" }

更多信息:

JSON在这里完美解析:http://jsonviewer.stack.hu

2 个答案:

答案 0 :(得分:3)

以字符串为单位转义反斜杠,以便按字面意思对它们进行处理。

console.log(JSON.parse('{"name":"tono","html":"<p><a href=\\"http:\\/\\/someurl.com\\">Here<\\/a> is the link<\\/p>"}'));

这里解释了转义正斜杠的原因JSON: why are forward slashes escaped?

答案 1 :(得分:-2)

正如Barmar所解释的那样,你可以逃避这样的反斜杠。

JSON.parse('{"name":"tono","html":"<p><a href=\\"http://someurl.com\\">Here</a> is the link</p>"}');