解析JSON会产生“意外令牌o”错误[重复]

2020/09/27 01:01 · javascript ·  · 0评论

我在解析简单的JSON字符串时遇到问题。我已经在JSONLint上检查了它们,它表明它们是有效的。但是,当我尝试使用JSON.parsejQuery替代方法解析它们时,出现了以下错误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>

注意:我正在使用json_encode()PHP 对字符串进行编码

您的数据已经是一个对象。无需解析。javascript解释器已经为您解析了它。

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

尝试解析如下:

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

使用JSON.stringify(data);

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

但是,错误的根源是您需要将完整的JSON字符串放在引号中。以下将修复您的示例:

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

正如其他受访者提到的那样,该对象已经被解析为JS对象,因此您无需解析它。为了演示如何在不解析的情况下完成相同的事情,您可以执行以下操作:

<!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 已经是一个JS对象,您无需解析它

响应已经解析,您无需再次解析。如果您再次解析它,它将给您“ unexpected token o”。如果您需要以字符串形式获取它,则可以使用JSON.stringify()

使用jQuery AJAX提交数据时,我遇到了同样的问题:

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

如果响应为JSON,并且您使用此方法,则获取的数据为JavaScript对象,但如果使用dataType:"text",则数据为JSON字符串。然后使用$.parseJSON就可以了。

我看到此unexpected token o错误的原因是我的代码(不完整)之前已经运行(实时重新加载!),并将特定的键控本地存储值设置为[object Object]而不是{}直到我更改了键,事情才开始按预期工作。或者,您可以按照以下说明删除设置错误的localStorage值

本文地址:http://javascript.askforanswer.com/jiexijsonhuichanshengyiwailingpaiocuowuzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!