javascript - 当字符串包含 src =""或 id =""属性时,不能 $.parseJSON()

标签 javascript jquery json

执行此操作时我可以使用 $.parseJSON():

var myString = '{ "Header": "<p>some content</p>"}';
var modelJsonObject = $.parseJSON(myString);

但不是当 "Header" 值包含 src="", id="" 等。如下所示:

var myString = '{ "Header": "<p><img src=\"http://placehold.it/50x50\" style=\"line-height: 1.3; width: 50px;\"><br></p>"}';

然后我得到一个 SyntaxError: Unexpected token in my console

怎么办?

最佳答案

由于 JSON 字符串以引号 (") 开头和结尾,因此必须对字符串 中的任何此类引号进行转义,如下所示:\" 因此,仅由引号组成的 JSON 字符串将是 "\""

但是还有 JavaScript 的语法。在 JS 中写为 '\"' 的字符串会产生字符串 "。 (尝试 console.log('\"')。)由于反斜杠在 JS 中具有特殊含义,因此必须对其进行转义。

以上的总和是一个仅由用 JS 编写的引号组成的 JSON 字符串将是:

'"\\""'

最后,您的字符串必须这样写:

var myString = '{ "Header": "<p><img src=\\"http://placehold.it/50x50\\" style=\\"line-height: 1.3; width: 50px;\\"><br></p>"}';
//             1            2              3
  1. JavaScript 字符串的开始。
  2. JSON 字符串的开头, JS 字符串中。
  3. JSON 字符串中的引号。

请注意,在 JS 中使用单引号使我们不必为 JS 转义双引号,但 JSON 语法仍然必须正确。如果我们对字符串使用双引号,那么我们最终会得到这个看起来很有趣的东西:

"{ \"Header\": \"<p><img src=\\\"http://placehold.it/50x50\\\" style=\\\"line-height: 1.3; width: 50px;\\\"><br></p>\"}";

其中 \\\" 是一个 JS 转义反斜杠 (\\),后跟一个 JS 转义引号 (\") ,导致 JSON 转义引号。

关于javascript - 当字符串包含 src =""或 id =""属性时,不能 $.parseJSON(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25742034/

相关文章:

javascript - 如果使用 AngularJS 需要相应的表单元素,则用星号标记标签

javascript - 正则表达式非捕获组 - 没用?

javascript - 如何在 asp.net 弹出表单上编写日期选择器代码

javascript - 无法读取未定义的属性 'split'

javascript - 表单显示 PHP HTML

java - 如何访问 POST 正文中发送的转换后的 JSON 对象的字段?

javascript - 即时导入样式表和 javascript

javascript - jquery 和 asp.net 中的全局化。如何?

javascript - 如何使用 angularjs 查找嵌套的 json 对象?

ios - 将数据从 JSON 保存到 Realm