JSON Lint说它有效但JSON.parse会抛出错误

时间:2014-03-05 14:28:41

标签: javascript json

我有简单的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);

1 个答案:

答案 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}]"};