无法解决错误“Uncaught SyntaxError:Unexpected token o”

时间:2013-01-10 19:39:36

标签: javascript json dojo

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

  

未捕获的SyntaxError:意外的令牌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 个答案:

答案 0 :(得分:10)

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

完全跳过解析:

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

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

答案 1 :(得分: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)

}

答案 2 :(得分:2)

尝试:

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

而不是:

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

数据已经是javascript对象而不是字符串

答案 3 :(得分: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);

我建议你看一下this MDN article about native JSON