Jose
Jose

Reputation: 617

Unable to solve error " Uncaught SyntaxError: Unexpected token o "

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

Answers (4)

suprita shankar
suprita shankar

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

Danilo Valente
Danilo Valente

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

mgraph
mgraph

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

Joseph Silber
Joseph Silber

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

Related Questions