执行此操作时我可以使用 $.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
- 是 JavaScript 字符串的开始。
- JSON 字符串的开头,在 JS 字符串中。
- 是 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/