JSON parseren die “onverwachte token o”-fout geeft

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.parseof 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_detailsis 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 $.parseJSONoké.


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.

Other episodes