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

POST请求发送JSON数组报cannot unmarshal array错误该如何解决

问题修复方案

报错核心原因:该API的后端是Go语言开发,/users接口期望接收的请求体是单个models.UserRequest类型的JSON对象,但你当前直接将Excel解析得到的JSON数组作为请求体提交,类型不匹配导致反序列化失败。

方案1:单条循环提交(适配现有单用户创建接口)

如果/users接口仅支持单次创建一个用户,你需要遍历解析出的用户数组,逐个构造请求提交:

import fetch from 'node-fetch';
import xlsx from 'xlsx';
const baseUrl = "";
const apiToken = "";
const accountId = "";
const wb = xlsx.readFile('users.xlsx');
const ws = wb.Sheets['users'];
const data = xlsx.utils.sheet_to_json(ws);

// 封装单个用户创建请求
const createSingleUser = async (user) => {
  const options = {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiToken}`,
      "gtmhub-accountid": accountId,
      "Content-type": "application/json; charset=UTF-8",
      Accept: "application/json, text/plain, */*",
    },
    body: JSON.stringify(user)
  };
  try {
    const res = await fetch(`${baseUrl}/users`, options);
    const resData = await res.text();
    console.log(`用户创建结果:`, resData);
  } catch (err) {
    console.log(`用户创建失败:`, err.message);
  }
}

// 遍历批量提交,可根据接口限流规则调整提交间隔
const batchCreateUsers = async () => {
  for (let user of data) {
    await createSingleUser(user);
    // 可选配置:增加提交延迟避免触发接口限流
    // await new Promise(resolve => setTimeout(resolve, 100))
  }
}

batchCreateUsers();

方案2:适配批量创建接口(如果服务端支持)

如果服务端提供了专门的批量创建用户接口,你需要先确认接口的请求规则:

  • 如果接口路径为/users/batch这类专用路径,且要求数组作为顶级请求体,直接替换请求的目标路径即可
  • 如果接口要求数组嵌套在指定字段中,按照要求调整请求体结构即可,示例如下:
body: JSON.stringify({
  user_list: data
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:15:02