jQuery parseJSON

当我尝试解析经过JSONvalidation的字符串时收到此错误(“JSON.parse:意外字符”)。 当我删除需要转义的字符时,它完美地工作(style =“width:400px;”)。 我错过了什么? 在使用parseJSON之前是否有一种独特的方法来转义字符?

var $cookieString = '{"youTabItems": { "youTab-001": 

Welcome to my test

, "youTab-002": "test02Value", "youTab-003": "test03Value" }}'; var $myCookieString = $.parseJSON($cookieString); logThis($myCookieString);

更新

我能够让它的大部分工作,直到我开始保存/从cookie中检索。 现在,它在分号后切断了内容……对此有何想法? 我在quirsmode.com上使用了3个函数来获取cookiefunction(如下所示)。

  function setCookie(name, value, days) { var date, expires; if (days) { date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "=", ca = document.cookie.split(';'), c, i; for (i = 0; i < ca.length; i++) { c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return null; } function eraseCookie(name) { setCookie(name, "", -1); } var cookieObject = {"youTabItems": { "youTab-001": "

Welcome to my test

", "youTab-002": "test02Value", "youTab-003": "test03Value" }}; var cookieString = JSON.stringify($cookieVal); setCookie('youTabItems', cookieString, 28);

 var $cookieString = '{"youTabItems": { "youTab-001": "

Welcome to my test

", "youTab-002": "test02Value", "youTab-003": "test03Value" }}'; var $myCookieString = $.parseJSON($cookieString);

将html包装为字符串以使JSON有效。

为什么双斜线?

blackslash是JavaScript字符串中的转义字符。 这意味着我们必须自己逃避它以创建一个字面的黑色斜杠。 我们需要一个字面反斜杠作为JSON中的转义字符。

例:

 var json = '{"foo": "\\""}'; 

将创建字符串

 {"foo": "\""} 

这是有效的JSON。 如果我们只有一个反斜杠,它就会创建

 {"foo": """} 

这是无效的。

注意:这只是因为您的JSON在JavaScript字符串中。 如果您将其作为HTTP响应提供,那么您只需要一个反斜杠。 但是,无论您使用什么来创建JSON都会自动转义引号,因此您不必处理它。

更新

将数据存储在cookie中的更好方法是:

 var cookieObject = {"youTabItems": { "youTab-001": "

Welcome to my test

", "youTab-002": "test02Value", "youTab-003": "test03Value" }}; var cookieString = JSON.stringify(cookieObject);

第一项未包含在引号中:

 "youTab-001": "Welcometomytest", 
 

Welcome to my test

它是一个字符串值? 然后必须引用它