2013-01-10 40 views
2

我目前正在练习使用Javascript/Dojo。但是,我有我无法解决的错误:无法解决错误“未捕获的SyntaxError:意外的令牌o”

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); 

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

+1

这个问题已经被问[数次](https://www.google.com/#q=uncaught+syntaxerror+unexpected+token+o ) 已经。一个可能的重复在这里:http://stackoverflow.com/questions/8081701/i-keep-getting-uncaught-syntaxerror-unexpected-token-o –

回答

10

您试图解析JavaScript对象。 JSON.parse用于解析代表类似JavaScript的对象的JSON字符串

就完全跳过解析:

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

相关提示:你可能有兴趣阅读There's no such thing as a "JSON Object"

2

尝试:

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

代替:

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

数据已经是一个JavaScript对象不是字符串

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

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) 

} 
相关问题