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

如何使用Javascript重构获取到的嵌套JSON对象

用JavaScript重构JSON对象的实用方案

嘿,我猜你是想把拿到的JSON数据转换成更贴合业务需求的结构对吧?我给你举个常见场景的示例,你可以照着这个思路适配自己的实际数据~

假设你的原始JSON数据长这样:

const originalJSON = [
  {
    productId: "P001",
    productName: "无线耳机",
    category: "数码产品",
    price: 299,
    stock: 50
  },
  {
    productId: "P002",
    productName: "纯棉T恤",
    category: "服饰",
    price: 99,
    stock: 200
  },
  {
    productId: "P003",
    productName: "机械键盘",
    category: "数码产品",
    price: 499,
    stock: 30
  }
];

而你想要的目标格式是按商品分类分组,只保留名称、价格和库存信息:

{
  "数码产品": [
    { "name": "无线耳机", "price": 299, "stock": 50 },
    { "name": "机械键盘", "price": 499, "stock": 30 }
  ],
  "服饰": [
    { "name": "纯棉T恤", "price": 99, "stock": 200 }
  ]
}

那你可以用Array.reduce()来高效完成这个重构,代码如下:

// 重构JSON的核心逻辑
const transformedData = originalJSON.reduce((result, item) => {
  // 如果当前分类还没在结果对象里,先初始化一个空数组
  if (!result[item.category]) {
    result[item.category] = [];
  }
  // 提取需要的字段,添加到对应分类的数组中
  result[item.category].push({
    name: item.productName,
    price: item.price,
    stock: item.stock
  });
  return result;
}, {});

console.log(transformedData);

核心思路拆解

  • reduce()是处理这类结构转换的利器,它能遍历原始数组,逐步构建我们想要的新对象
  • 每次遍历先判断目标分组键(这里是category)是否存在于结果中,不存在就创建对应的数组容器
  • 从原始数据里提取需要的字段,按目标格式组装后加入对应分组

如果你的原始JSON结构、目标格式和示例不同,只需要调整reduce里的逻辑就行:比如修改分组的依据键、调整提取的字段,要是遇到嵌套层级深的JSON,还可以结合解构或者递归遍历处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:11:35