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.
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']);
Versuchen Sie, so zu parsen:
var yourval = jQuery.parseJSON(JSON.stringify(data));
Mit JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
Die Fehlerquelle ist jedoch, dass Sie die vollständige JSON-Zeichenfolge in Anführungszeichen setzen müssen. Im Folgenden wird Ihr Beispiel behoben:
<!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>
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:
<!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>
cur_ques_details
ist bereits ein JS-Objekt, Sie brauchen es nicht zu parsen'
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.
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.
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.