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
  • 205,539
  • 55
  • 352
  • 286
Jose
  • 567
  • 2
  • 5
  • 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
  • 205,539
  • 55
  • 352
  • 286
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,400
  • 1
  • 12
  • 37
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,016
  • 4
  • 38
  • 73
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,037
  • 8
  • 52
  • 66