2

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.

Joseph Silber
  • 214,931
  • 59
  • 362
  • 292
Jose
  • 587
  • 2
  • 6
  • 21
  • 1
    This question has been asked [several times](https://www.google.com/#q=uncaught+syntaxerror+unexpected+token+o) already. A possible duplicate is here: http://stackoverflow.com/questions/8081701/i-keep-getting-uncaught-syntaxerror-unexpected-token-o – Robert Harvey Jan 10 '13 at 19:45

4 Answers4

11

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".

Joseph Silber
  • 214,931
  • 59
  • 362
  • 292
4

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)

}
suprita shankar
  • 1,554
  • 2
  • 16
  • 47
2

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

mgraph
  • 15,238
  • 4
  • 41
  • 75
1

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

Danilo Valente
  • 11,270
  • 8
  • 53
  • 67