执行此操作时我可以使用$ .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
怎么办?
答案 0 :(得分:2)
由于JSON字符串以引号("
)开头和结尾,所以字符串中的任何此类引号必须被转义,如下所示:\"
因此,一个JSON字符串仅由引用组成"\""
。
然后是JavaScript的语法。在JS中写为'\"'
的字符串会生成字符串"
。 (尝试console.log('\"')
。)由于反斜杠在JS中具有特殊含义,因此必须对它们进行转义。
以上的总和是一个JSON字符串,只包含一个用JS编写的引用:
'"\\""'
最后,你的字符串必须这样写:
var myString = '{ "Header": "<p><img src=\\"http://placehold.it/50x50\\" style=\\"line-height: 1.3; width: 50px;\\"><br></p>"}';
// 1 2 3
请注意,在JS中使用单引号使我们不必转义 JS 的双引号,但JSON语法仍然必须正确。如果我们对字符串使用双引号,那么我们最终会看到这个看起来很滑稽的东西:
"{ \"Header\": \"<p><img src=\\\"http://placehold.it/50x50\\\" style=\\\"line-height: 1.3; width: 50px;\\\"><br></p>\"}";
其中\\\"
是JS转义反斜杠(\\
),后跟JS转义引号(\"
),导致引用JSON转义。