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

使用Zapier对接API时遭遇SyntaxError错误求助(附代码)

解决Zapier对接API时的JSON解析错误

嘿,我来帮你搞定这个问题!你遇到的SyntaxError: Unexpected token o in JSON at position 1错误其实很典型,咱们一步步拆解问题、修复代码:

错误原因分析

这个错误本质是:你尝试用JSON.parse()去解析已经是JavaScript对象的内容,而不是原始的JSON字符串。结合你的代码来看,还有几个关键问题共同导致了这个报错:

代码里的3个核心问题

  • Fetch是异步操作,你没处理Promise:fetch()返回的是一个Promise对象,不是直接的响应内容,直接赋值给response会导致后续解析完全偏离预期。
  • Headers结构嵌套错误:你在headers对象里又嵌套了一层headers,这不符合Fetch API的参数规范,会导致认证头根本没被正确发送到API。
  • 重复解析JSON:response.json()方法会自动把响应体解析成JavaScript对象,不需要再额外调用JSON.parse(),重复操作就会触发那个奇怪的语法错误。

修正后的完整代码

// 用async函数处理异步操作,Zapier支持这种语法
async function run() {
  var url = "MY API REQUEST URL";
  // 修正请求参数结构:把方法和请求头放在同一个options对象里
  var options = {
    method: "GET", // 根据你的API需求调整,比如POST/PUT
    headers: {
      "Accept": "application/json",
      "Authorization": "MY API TOKEN"
    }
  };

  // 等待fetch请求完成,拿到响应对象
  var response = await fetch(url, options);
  // 自动把响应体解析为JavaScript对象
  var data = await response.json();
  
  // Zapier的callback规范:第一个参数是错误(成功传null),第二个是结果
  callback(null, data);
}

// 执行函数
run();

关键改动说明

  1. 用async/await处理异步:不用复杂的Promise回调链,更直观地等待请求完成,避免异步操作导致的变量值异常。
  2. 修正请求参数结构:把原来混乱的headers嵌套改成标准的Fetch options格式,确保API能收到正确的认证信息。
  3. 移除多余的JSON.parse():靠response.json()完成解析,彻底避免重复解析的错误。
  4. 规范Zapier的callback调用:按照Zapier的要求传入参数,让平台能正确识别请求结果。

如果修正后还是有问题,可以先打印response.status看看HTTP状态码,确认API是否正常响应(比如200代表成功,401可能是认证失败)~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:02:29