我有简单的JSON,我需要解析到对象。奇怪的是,即使我将JSON字符串复制并粘贴到JSONLint(http://jsonlint.com/),它也无效。它将显示它是有效的。
var string = '{"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"}';
var obj = JSON.parse(string); // Unexpected token n
console.log(obj);
答案 0 :(得分:12)
解析原始JSON时,数据中的\
个字符被视为JSON转义字符。
当您将JSON嵌入JavaScript字符串中时,它们将被视为 JavaScript 转义字符,而不是JSON转义字符。
当您将JSON表示为JavaScript字符串时,需要以\\
转义它们。
也就是说,通常只需将JSON作为对象(或数组)文字放入JavaScript中,而不是将其嵌入字符串中,然后将其解析为单独的步骤。
var obj = {"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"};