首页 > 解决方案 > JSON.parse 失败

问题描述

我正在尝试从 JSON 字符串“object”创建一个 JavaScript 对象,但它失败并出现错误:

“SyntaxError:JSON.parse:在 JSON 数据的第 1 行第 48 行的对象中的属性值之后预期为 ',' 或 '}'”

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

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

我注意到它在这个在线 JSON 解析站点上通过了 OK:json parser

标签: javascriptjsonparsing

解决方案


\字符是 JavaScriptJSON 的转义字符。

当 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);


推荐阅读