Ik heb een probleem met het ontleden van eenvoudige JSON-tekenreeksen. Ik heb ze gecontroleerd op JSONLinten het laat zien dat ze geldig zijn. Maar wanneer ik ze probeer te ontleden met behulp van JSON.parse
of het jQuery-alternatief, krijg ik de fout unexpected 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>
Opmerking: ik codeer mijn strings met json_encode()
in PHP.
Antwoord 1, autoriteit 100%
Je gegevens zijn al een object. Het is niet nodig om het te ontleden. De javascript-interpreter heeft het al voor je geparseerd.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
Antwoord 2, autoriteit 9%
Probeer zo te ontleden:
var yourval = jQuery.parseJSON(JSON.stringify(data));
Antwoord 3, autoriteit 2%
Met behulp van JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
Antwoord 4
De oorzaak van uw fout is echter dat u de volledige JSON-tekenreeks tussen aanhalingstekens moet plaatsen. Het volgende zal uw voorbeeld repareren:
<!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>
Zoals de andere respondenten hebben vermeld, is het object al geparseerd in een JS-object, dus u hoeft het niet te ontleden. Om te demonstreren hoe u hetzelfde kunt bereiken zonder te ontleden, kunt u het volgende doen:
<!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>
Antwoord 5
cur_ques_details
is al een JS-object, u hoeft het niet te ontleden
Antwoord 6
Reactie is al geparseerd, u hoeft deze niet opnieuw te ontleden. als je het opnieuw ontleedt, krijg je “unexpected token o
“. als je het als string wilt krijgen, kun je JSON.stringify()
. gebruiken
Antwoord 7
Ik had hetzelfde probleem toen ik gegevens indiende met jQuery AJAX:
$.ajax({
url:...
success:function(data){
//server response's data is JSON
//I use jQuery's parseJSON method
$.parseJSON(data);//it's ERROR
}
});
Als het antwoord JSON is en u deze methode gebruikt, zijn de gegevens die u krijgt een JavaScript-object, maar als u dataType:"text"
gebruikt, zijn gegevens een JSON-tekenreeks. Dan is het gebruik van $.parseJSON
oké.
Antwoord 8
Ik zag deze unexpected token o
-fout omdat mijn (onvolledige) code eerder was uitgevoerd (live herladen!) en de specifieke versleutelde lokale opslagwaarde had ingesteld op [object Object]
in plaats van {}
. Pas toen ik de sleutels veranderde, begon het te werken zoals verwacht. U kunt ook deze instructies volgen om de onjuist ingestelde localStorage-waardete verwijderen.