我试图从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
答案 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"}' );
这应该有效