解析 JSON 给出“意外的令牌 o”错误

IT技术 javascript json
2021-01-14 04:09:18

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

6个回答

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

var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
@FilipHaglund:除了 JSON 的语法比 JS 对象的语法严格得多。例如,JS 允许不带引号的属性名称,而 JSON 则不允许。
2021-03-19 04:09:18
如何从 jquery 检测数据是否已经是有效的 json 对象?
2021-03-20 04:09:18
@mko:在这种情况下,你没有。你知道它是或不是。看看它是否符合JSON规范。
2021-04-08 04:09:18
@DarkFalcon 我用 if (typeof data == 'object') { dostuff } 来检查它是一个 json 对象还是一个普通的字符串
2021-04-08 04:09:18
请注意,JSON 是 JavaScript 对象表示法,因此 javascript 源代码中的 JSON 只是一个 JS 对象。我们借用 Javascript 的对象语法在编程语言之间进行数据传输,因为它易于使用。
2021-04-10 04:09:18

尝试解析:

var yourval = jQuery.parseJSON(JSON.stringify(data));
为什么不使用JSON.parse
2021-03-17 04:09:18
这对我有用以进行调试。非常感谢。我意识到我正在从控制器中回显额外的不必要信息。
2021-03-27 04:09:18
为什么使用jQuery
2021-04-03 04:09:18

使用JSON.stringify(data);

$.ajax({
    url: ...
    success:function(data){
        JSON.stringify(data); //to string
        alert(data.you_value); //to view you pop up
    }
});
只是调用JSON.stringify不会对您的数据做任何事情,该函数实际上返回您现在序列化的数据。
2021-03-26 04:09:18

但是,错误的根源在于您需要将完整的 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对象,不需要解析

没有“JSON 对象”这样的东西。JSON 是一个字符串。你的意思是一个“JS对象”。
2021-03-14 04:09:18
我认为他的意思是“Javascript 对象”
2021-04-01 04:09:18