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.
432
8
Ihre Daten sind bereits ein Objekt. Sie brauchen sie nicht zu parsen. Der Javascript-Interpreter hat sie bereits für Sie geparst.
Versuchen Sie, so zu parsen:
Mit
JSON.stringify(data);
:Die Fehlerquelle ist jedoch, dass Sie die vollständige JSON-Zeichenfolge in Anführungszeichen setzen müssen. Im Folgenden wird Ihr Beispiel behoben:
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:
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 SieJSON.stringify()
verwenden.Ich hatte das gleiche Problem, als ich Daten mit jQuery AJAX einreichte:
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.