javascript - 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
解决方案
该\
字符是 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);
推荐阅读
- python - 在烧瓶外壳中运行烧瓶应用程序时出现 AttributeError
- c# - 如何理解以前的(Form1.cs)数据信息
- amazon-cloudformation - 暂停模板执行几分钟
- java - Android 上的彩信和短信日期不一样
- android - 为什么我们不允许对 Android XML 工具 URL 使用 https?
- c++ - 将循环结果访问到类的实例以进行输出
- java - Java反射查找方法
- tensorflow - 有没有办法在训练期间强制执行 ANN 的权重和偏差之间的特定关系?
- laravel - Laravel eloquent hasManyThrough 模型访问
- visual-studio - 在 platformio-ide-terminal 中构建 CUDA