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

JS循环操作JSON数组出现嵌套异常 如何实现标准对象数组结构

问题根因

异常嵌套的核心原因是:request.body.id为上一次返回的完整JSON数组字符串,JSON.parse后得到的是数组类型,你直接使用push方法将整个数组作为单个元素塞入新数组,每执行一次操作就会多一层嵌套:

  • 第一次操作:空数组push新对象,返回[{"a":1,"b":1,"c":1}]
  • 第二次操作:解析旧返回值得到数组,直接push进空数组后生成[[{"a":1,"b":1,"c":1}]],再添加新对象后返回两层嵌套结构
  • 多次操作后嵌套层级持续叠加,和你遇到的异常结构完全匹配。
修正方案

根据场景可选择以下两种方案:

方案1:合并旧数组所有元素

将解析得到的旧数组的元素批量加入新数组,而非直接push整个数组,示例逻辑:

// 解析旧数据
const oldList = JSON.parse(request.body.id)
// 初始化新数组
const newList = []
// 批量添加旧数组所有元素
newList.push(...oldList)
// 添加新构造的对象
const data = {a: input1, b: input2, c: input3}
newList.push(data)
// 返回序列化结果
return JSON.stringify(newList)

也可以用concat方法直接合并:const newList = oldList.concat([data])

方案2:兼容单对象传参场景

如果预期request.body.id解析后为单个对象,仅当前端错误传回完整数组时才出现异常,可以增加类型校验兼容:

const parsedData = JSON.parse(request.body.id)
const newList = []
// 根据解析结果类型处理
if (Array.isArray(parsedData)) {
  newList.push(...parsedData)
} else {
  newList.push(parsedData)
}
// 添加新对象
const data = {a: input1, b: input2, c: input3}
newList.push(data)
return JSON.stringify(newList)

内容的提问来源于stack exchange,提问作者Thorben C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:24:05