2

我目前正在练习使用 Javascript/Dojo。但是,我有一个无法解决的错误:

Uncaught SyntaxError: Unexpected token o

我对我的问题做了一个快速的片段:

var data = {
    "list": {
        "1": {
            "Relevance": "Low",
            "id": 1,
            "Name": "Inorganic"
        },
        "2": {
            "Relevance": "Low",
            "id": 2,
            "Name": "Mobile"
        }
    }
}

var jsonData = JSON.parse(data);
alert(jsonData.list[1].Name);

它专门针对以下行:

var jsonData = JSON.parse(data);

我想知道为什么这是一个错误以及我将如何解决它。

4

4 回答 4

11

您正在尝试解析 JavaScript 对象。JSON.parse用于解析表示类 JavaScript 对象的 JSON 字符串。

完全跳过解析:

alert(data.list[1].Name);

在相关说明中:您可能有兴趣阅读There's no such things as a "JSON Object"

于 2013-01-10T19:42:42.463 回答
4

错误一旦被声明为数据类型 json,它就会为您解析。

所以:它会是这样的

<span style="text-decoration:line-through;">var obj = JSON.parser(data)</span>

 success: function(data){

  var obj = JSON.parser(data)

  alert(obj.data)

}
于 2013-02-01T09:54:26.467 回答
2

尝试 :

 alert(data.list[1].Name);

代替:

 var jsonData = JSON.parse(data);
 alert(jsonData.list[1].Name);

data 已经是 javascript 对象而不是字符串

于 2013-01-10T19:43:05.310 回答
1

这是因为您正在解析一个普通对象,而不是一个字符串,正如预期的那样。在这种情况下,您只需:

alert(jsonData.list[1].Name);

在这种情况下,要使用JSON.parse您应该一直使用此字符串的方法:

var stringifiedJson = var data = "{"+
    "\"list\": {"+
        "\"1\": {"+
            "\"Relevance\": \"Low\","+
            "\"id\": 1,"+
            "\"Name\": \"Inorganic\""+
        "},"+
        "\"2\": {"+
            "\"Relevance\": \"Low\","+
            "\"id\": 2,"+
            "\"Name\": \"Mobile\""+
        "}"+
    "}"+
"}";

var jsonData = JSON.parse(stringifiedJson);
alert(jsonData.list[1].Name);

我建议你看看这篇关于原生 JSON 的 MDN 文章

于 2013-01-10T19:43:44.263 回答