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

向Node.js发送对象数组遇格式异常问题求助

我来帮你排查这个问题——你遇到的情况其实是因为前后端数据传输的格式没匹配上,咱们一步步解决:

先搞清楚为什么会出现这两种异常

  1. 不使用JSON.stringify时得到空元素数组:
    你大概率是在发送x-www-form-urlencoded格式的表单请求,这种格式默认只能处理简单的键值对,没法直接序列化对象数组。它会把数组里的每个对象当成“无键值的空项”,所以后端收到["", ""]。

  2. 用了JSON.stringify后得到奇怪的键值对:
    你应该是把JSON字符串直接当成了表单的键名(比如写了类似{ [JSON.stringify(yourArray)]: '' }的代码),而不是把JSON字符串作为某个字段的值传递,所以后端才会拿到{'[{"itemNumber":...}]': '' }这种结构。


推荐解决方案:发送JSON格式请求(最省心)

如果你的Node.js后端是用Express这类框架,直接发送JSON格式的请求是最直接的方式,前后端都不用额外处理复杂的序列化:

前端代码示例(以axios为例)

// 你的对象数组
const itemList = [
  {"itemNumber":"13544","currentShelf":"1A1","amount":"1","newShelf":"","actionType":"in","whareHouse":"Main"},
  {"itemNumber":"13544","currentShelf":"1B1","amount":"1","newShelf":"","actionType":"in", "whareHouse":"Main"}
];

// 发送请求时直接传数组,并指定Content-Type为application/json
axios.post('/api/items', itemList, {
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(res => console.log('请求成功:', res.data))
.catch(err => console.error('请求失败:', err));

Node.js后端(Express)配置

你需要先启用Express的JSON解析中间件,这样才能正确解析请求体里的JSON:

const express = require('express');
const app = express();

// 关键:启用JSON请求体解析
app.use(express.json());

// 处理POST请求
app.post('/api/items', (req, res) => {
  // req.body就是你前端发送的对象数组
  console.log('收到的物品列表:', req.body);
  res.status(200).send('物品列表已接收');
});

app.listen(3000, () => console.log('服务器运行在3000端口'));

备选方案:如果必须发送表单格式数据

如果你因为业务限制必须用x-www-form-urlencoded格式,建议用qs库来正确序列化对象数组:

前端步骤

  1. 先安装qs:npm install qs
  2. 用qs.stringify序列化数组:
import qs from 'qs';

const itemList = [/* 你的数组 */];

axios.post('/api/items', qs.stringify({ items: itemList }), {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
});

Node.js后端配置

启用Express的表单解析中间件(注意要开extended: true来支持复杂对象):

app.use(express.urlencoded({ extended: true }));

app.post('/api/items', (req, res) => {
  // req.body.items就是解析后的对象数组
  console.log('收到的物品列表:', req.body.items);
  res.send('接收成功');
});

这样就能解决你之前遇到的两种异常情况啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:48