可以't$.parseJSON()当字符串保持src=“”时"或者id=“0”"属性

Can't $.parseJSON() when string holds src="" or id="" attributes

本文关键字:quot id 属性 src 或者 parseJSON 可以 字符串      更新时间:2023-09-26

执行此操作时,我可以使用$.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:意外的令牌

该怎么办?

由于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 escaped引号('"),生成一个JSON转义引号。