【问题标题】:Unexpected token o in JSON at position 1 in console控制台中位置 1 的 JSON 中的意外标记 o
【发布时间】:2018-10-18 22:44:02
【问题描述】:

这是一个名为 menu.json 的文件的内容:

 { "name":"John", "city":"New York"}

我想用jquery将json文件解析到Chrome的控制台

var res = $.getJSON("menu.json", function() {})

        .done(function() {
            var obj = $.parseJSON(res);
            console.log(obj.name);
        });

由于某种原因,Chrome 说 "Uncaught SyntaxError: 位置 1 处 JSON 中的意外标记 o"

我在 MAMP 和网络选项卡中运行该页面,我能够看到已正确加载的 json 文件。为什么会出现这个错误。非常感谢任何帮助!

【问题讨论】:

  • getJSON 在将响应传递给成功回调之前对其进行解析。你不必解析它。此外,您的 sn-p 中的 res 是从 getJSON 调用返回的承诺,因此无论如何您都试图解析它是没有意义的

标签: jquery json parsing


【解决方案1】:

您正在尝试解码一个对象,而不是 JSON 字符串。

您尝试解码的内容在作为[object Object] 传递给JSON 解码器之前被序列化,因此索引1 处的o

返回getJSON docs,您会发现您的回调设置不正确。您存储在res 中的返回值不是您认为的那样。你需要为你的回调函数收集一个参数——这是你解码响应的地方。

这应该能让你走上正确的道路:

$.getJSON("menu.json")
.done(function(obj) {
    console.log(obj.name);
});

【讨论】:

    【解决方案2】:

    数据已经被解析。只需接受响应作​​为完成回调的输入即可。

    var url = 'https://cdn.rawgit.com/taplar/taplar-hiddenworld/b69ca458/src/assets/jsons/potions.json'
    
    $.getJSON(url).done(function(data){
      console.log(data);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      相关资源
      最近更新 更多