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
它是一个字符串值? 然后必须引用它