Reputation: 617
I am currently practicing using Javascript/Dojo. However, I have an error that I am unable to solve:
Uncaught SyntaxError: Unexpected token o
I have made a quick snippet of my problem:
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);
It specifically targets the line with:
var jsonData = JSON.parse(data);
I would like to know why this is an error & how I would solve it.
Upvotes: 2
Views: 8063
Reputation: 1579
Error is once declared as datatype json, it parses for you.
so : it would be something like this
<span style="text-decoration:line-through;">var obj = JSON.parser(data)</span>
success: function(data){
var obj = JSON.parser(data)
alert(obj.data)
}
Upvotes: 4
Reputation: 11342
That's because you are parsing a plain object, and not a string, as expected. In this case you just have to:
alert(jsonData.list[1].Name);
In this case, to use the JSON.parse
method you should've been using this string:
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);
I recommend you to take a look at this MDN article about native JSON
Upvotes: 1
Reputation: 15338
try :
alert(data.list[1].Name);
instead of:
var jsonData = JSON.parse(data);
alert(jsonData.list[1].Name);
data is already a javascript object not a string
Upvotes: 2
Reputation: 219938
You're trying to parse a JavaScript object. JSON.parse
is for parsing a JSON string representing a JavaScript-like object.
Just skip the parsing altogether:
alert(data.list[1].Name);
On a related note: you might be interested in reading There's no such thing as a "JSON Object".
Upvotes: 11