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

使用Map处理JSON数据后,如何添加Catalogues标签生成目标格式?

问题描述

现有如下JSON数据:

{
"siteCode": "S01",
"modelCode": "M001",
"modelDesc": "Desc01",
"price": 100,
"status": "A",
"startDate": "May  6 2023  4:13PM",
"endDate": "May  6 2023  4:13PM"
},
{
"siteCode": "S01",
"modelCode": "M001",
"modelDesc": "Desc01",
"price": 50,
"status": "A",
"startDate": "May  10 2023  4:13PM",
"endDate": "May  10 2023  4:13PM"
}

需要转换为包含Catalogues数组的目标格式:

{
  "Catalogues": [
    {
      "siteCode": "S01",
      "modelCode": "M001",
      "modelDesc": "Desc01",
      "datelist": [
        {
          "price": 100,
          "status": "A",
          "startDate": "May  6 2023  4:13PM",
          "endDate": "May  6 2023  4:13PM"
        },
        {
          "price": 50,
          "status": "A",
          "startDate": "May  10 2023  4:13PM",
          "endDate": "May  10 2023  4:13PM"
        }
      ]
    }
  ]
}

当前使用以下代码处理,但返回结果缺少外层的Catalogues标签:

const data = result.recordset

const map = new Map(data.map(({ siteCode, modelCode, modelDesc }) =>
  [modelCode, { siteCode, modelCode, modelDesc, datelist: [], }]
));
for (const { siteCode, modelCode, modelDesc, ...rest } of data) {
  map.get(modelCode).datelist.push(rest)
};
const resultMap = [...map.values()];
return res.json(resultMap)
解决方案

只需要将最终的resultMap包裹在一个对象中,以Catalogues作为键即可,修改后的代码如下:

const data = result.recordset

const map = new Map(data.map(({ siteCode, modelCode, modelDesc }) =>
  [modelCode, { siteCode, modelCode, modelDesc, datelist: [], }]
));
for (const { siteCode, modelCode, modelDesc, ...rest } of data) {
  map.get(modelCode).datelist.push(rest)
};
const resultMap = [...map.values()];
// 关键修改:将结果包装成包含Catalogues键的对象
return res.json({ Catalogues: resultMap })

原理说明:

  • 原代码直接返回了合并后的数组resultMap,而目标格式要求外层是一个包含Catalogues属性的对象,属性值为该数组。
  • 通过{ Catalogues: resultMap }创建符合要求的结构,再传入res.json()即可生成正确的目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:42:08