JSON.parse失败

时间:2018-05-23 14:00:19

标签: javascript json parsing

我试图从JSON字符串创建一个JavaScript对象" object"但它失败并出现错误:

" SyntaxError:JSON.parse:expected','或者'}'}在JSON数据的第1行第48列的对象中的属性值之后"



var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \"Test\" string with quotes"}' );




mystring 是一个包含双引号的字符串,但我已使用反斜杠正确转义它们。为什么会失败?

我注意到它在这个在线JSON解析网站上传递正常:json parser

2 个答案:

答案 0 :(得分:8)

\字符是JavaScript JSON的转义字符。

当JavaScript解析器解析字符串文字时,它会将JavaScript源代码中的\"转换为字符串中的"

当JSON解析器解析字符串时,它会找到未转义的"和错误。

要在JSON数据中包含\",您需要转义JavaScript字符串文字中的\\\"



var jsobj = JSON.parse('{"lineID":11,"siteID":3,"mystring":"this is a \\"Test\\" string with quotes"}');
console.log(jsobj);




嵌套数据格式总是很痛苦。最好尽可能避免这样做。

首先在JavaScript中包含一个包含JSON的字符串文字是没有意义的。

JSON是JavaScript的一个子集。只需将JSON用作JavaScript文字即可。



var jsobj = {
  "lineID": 11,
  "siteID": 3,
  "mystring": "this is a \"Test\" string with quotes"
};

console.log(jsobj);




答案 1 :(得分:0)

对于双引号,您必须使用双反斜杠

var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \\"Test\\" string with quotes"}' );

这应该有效