Parsing JSON giving “unexpected token o” error [duplicate]

Parsing JSON giving “unexpected token o” error [duplicate]

This question already has an answer here:

I keep getting “Uncaught SyntaxError: Unexpected token o”

8 answers

I am having a problem parsing simple JSON strings. I have checked them on JSONLint and it shows that they are valid. But when I try to parse them using either JSON.parse or the jQuery alternative it gives me the error unexpected token o:







Note: I’m encoding my strings using json_encode() in PHP.

Solutions/Answers:

Solution 1:

Your data is already an object. No need to parse it. The javascript interpreter has already parsed it for you.

var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);

Solution 2:

Try parse so:

var yourval = jQuery.parseJSON(JSON.stringify(data));

Solution 3:

Using JSON.stringify(data);:

$.ajax({
    url: ...
    success:function(data){
        JSON.stringify(data); //to string
        alert(data.you_value); //to view you pop up
    }
});

Solution 4:

cur_ques_details is already a JS object, you don’t need to parse it

Solution 5:

The source of your error, however, is that you need to place the full JSON string in quotes. The following will fix your sample:

<!doctype HTML>
<html>
    <head>
    </head>
    <body>
        <script type="text/javascript">
            var cur_ques_details ='{"ques_id":"15","ques_title":"jlkjlkjlkjljl"}';
            var ques_list = JSON.parse(cur_ques_details);
            document.write(ques_list['ques_title']);
        </script>
    </body>
</html>

As the other respondents have mentioned, the object is already parsed into a JS object so you don’t need to parse it. To demonstrate how to accomplish the same thing without parsing, you can do the following:

<!doctype HTML>
<html>
<head>
</head>
    <body>
        <script type="text/javascript">
            var cur_ques_details ={"ques_id":"15","ques_title":"jlkjlkjlkjljl"};
            document.write(cur_ques_details.ques_title);
        </script>
    </body>
</html>

Solution 6:

Response is already parsed, you don’t need to parse it again. if you parse it again it will give you “unexpected token o“. if you need to get it as string, you could use JSON.stringify()