You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取JSON对象标题实现自动补全时遇Unexpected token o错误求助

解决$.parseJSON()触发"Uncaught SyntaxError: Unexpected token o"的问题

核心原因

这个错误说白了就是你多做了一步无用功——你手里已经是现成的JavaScript对象了,却还非要用$.parseJSON()去“解析”它。

$.parseJSON()的要求很明确:它只认JSON格式的字符串。如果你传进去的是已经解析好的对象,JS会先把这个对象转成字符串"[object Object]",然后去解析这个字符串的时候,第一个字符就是o,这不就直接触发语法错误了嘛。

常见场景&解决办法

  • 场景1:用了自动解析的AJAX方法
    比如你用$.getJSON()或者原生fetch的response.json()获取数据,这些方法本身就帮你把JSON字符串转成JS对象了,根本不需要再调用$.parseJSON():

    // 正确写法:直接用返回的对象
    $.getJSON('你的数据接口.json', function(data) {
      // 遍历提取标题
      data.forEach(item => {
        console.log(item.title);
      });
    });
    
  • 场景2:手动构造数据搞混了字符串和对象
    自己写测试数据的时候,一定要分清JSON字符串和JS对象的区别:

    // 错误:传对象给$.parseJSON()
    let wrongData = {title: "测试标题"};
    $.parseJSON(wrongData); // 直接报错
    
    // 正确:只有字符串才需要解析
    let correctDataStr = '{"title": "测试标题"}';
    let data = $.parseJSON(correctDataStr);
    console.log(data.title); // 正常输出
    
  • 场景3:不确定变量类型
    拿不准手里的变量是字符串还是对象?先打印类型确认:

    console.log(typeof 你的变量名);
    // 如果输出是"object",直接用就行;如果是"string",再调用$.parseJSON()
    

针对你的需求(提取所有标题打印)

不管你是直接拿到解析好的对象,还是解析后的对象,都可以用这段代码来提取标题:

// 假设data是包含多个带title字段的对象数组
data.forEach(item => {
  if (item.title) { // 避免没有title字段的情况报错
    console.log(item.title);
  }
});

内容的提问来源于stack exchange,提问作者user5481714

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:42:32