Parsing JSON geben "unerwartetes Zeichen o" Fehler

Ich habe ein Problem beim Parsen einfacher JSON-Zeichenfolgen. Ich habe sie auf JSONLint überprüft und es zeigt, dass sie gültig sind. Aber wenn ich versuche, sie entweder mit JSON.parse oder der jQuery-Alternative zu parsen, bekomme ich den Fehler unerwartete Token o:

<!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>

Anmerkung: Ich'm kodiere meine Zeichenketten mit json_encode() in PHP.

Kommentare zu der Frage (1)
Lösung

Ihre Daten sind bereits ein Objekt. Sie brauchen sie nicht zu parsen. Der Javascript-Interpreter hat sie bereits für Sie geparst.

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

Versuchen Sie, so zu parsen:

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

Mit JSON.stringify(data);:

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

Die Fehlerquelle ist jedoch, dass Sie die vollständige JSON-Zeichenfolge in Anführungszeichen setzen müssen. Im Folgenden wird Ihr Beispiel behoben:






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

Wie die anderen Befragten bereits erwähnt haben, ist das Objekt bereits in ein JS-Objekt geparst, so dass Sie es nicht't parsen müssen. Um zu demonstrieren, wie Sie dasselbe ohne Parsen erreichen können, können Sie wie folgt vorgehen:






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

Kommentare (0)

cur_ques_details ist bereits ein JS-Objekt, Sie brauchen es nicht zu parsen&#39

Kommentare (2)

Die Antwort ist bereits geparst, Sie brauchen sie nicht noch einmal zu analysieren't. Wenn Sie sie erneut parsen, erhalten Sie "unerwartete Token o". Wenn Sie sie als Zeichenkette erhalten müssen, können Sie JSON.stringify() verwenden.

Kommentare (0)

Ich hatte das gleiche Problem, als ich Daten mit jQuery AJAX einreichte:

$.ajax({
   url:...
   success:function(data){
      //server response's data is JSON
      //I use jQuery's parseJSON method 
      $.parseJSON(data);//it's ERROR
   }
});

Wenn die Antwort JSON ist und Sie diese Methode verwenden, sind die Daten, die Sie erhalten, ein JavaScript-Objekt, aber wenn Sie dataType:"text" verwenden, sind die Daten eine JSON-Zeichenfolge. Dann ist die Verwendung von $.parseJSON in Ordnung.

Kommentare (0)

Ich sah diesen unerwarteten Token o-Fehler, weil mein (unvollständiger) Code zuvor (live reload!) gelaufen war und den speziellen keyed local storage-Wert auf [Objekt Objekt] statt auf {} gesetzt hatte. Es dauerte't bis ich die Schlüssel änderte, bis die Dinge anfingen, wie erwartet zu funktionieren. Alternativ können Sie diesen Anweisungen folgen, um den falsch gesetzten localStorage-Wert zu löschen.

Kommentare (1)