0

所以,我的 JSON 响应是一个简单的数组:

[35,55]

Chrome 网络检查器将其显示为有效的 JSON。但是,当我在 xhr.responseText 上使用 JSON.parse 时,它​​给了我错误:Uncaught SyntaxError: Unexpected token :

我已经尝试使用 JSON.stringify 并且只使用它而不在 JSON.parse 中解析它,但是它并没有被 JS 视为一个数组。

JSONLint 说它也是有效的 JSON。

我不知道该怎么做,我只想在 JS 中使用我的 xhr 数组作为数组。

4

3 回答 3

0

在使用我的应用程序时,我两次遇到此错误。当然,我有一个复杂的 Json,而不是你的简单。以下是两种情况。请检查它们是否与您的情况相符。一种。正如我所说我使用的是复杂的 json,我错过了使用“,”,有时我使用花括号来定义一个数组。湾。我必须用一个类来确认那个 js 对象。我的 json 比类多了 2 个额外的值。所以它无法解析它。希望这个经验对您有所帮助!

于 2013-08-17T09:17:11.393 回答
0

问题是我使用 JSON.parse 将一个已经被 JSON.parse 解析的变量传递给一个存储变量,这导致了错误。

这是我做错的一个例子:

var currentJSON = JSON.parse(xhr.responseText);
var oldJSON = [];
if (currentJSON) {
    /* do stuff with currentJSON, like compare currentJSON with oldJSON */
    oldJSON = JSON.parse(currentJSON); /* <- THIS is what caused the issue */
}

这是我应该做的:

var currentJSON = JSON.parse(xhr.responseText);
var oldJSON = [];
if (currentJSON) {
    /* do stuff with currentJSON, like compare currentJSON with oldJSON */
    oldJSON = currentJSON; /* <- removed JSON.parse(); from currentJSON */
}
于 2013-08-17T09:23:03.287 回答
0

问题原来是我两次解析 JSON。

于 2013-09-28T22:37:22.933 回答