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

按resource name分组后JSON结构调整需求技术求助

解决JSON分组格式转换问题

看起来你需要把嵌套的分组JSON结构转换成更简洁的格式——提取公共的resourceName,并将每个条目的groupedMonths合并成一个列表。我来给你一步步实现这个转换:

原始输入

{"groupedResourceDtos": { "Resource PopCheck": { "9": [{ "id": 9, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 9, "monthName": "Aug", "noOfLicenses": 8 } }], "10": [{ "id": 10, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 10, "monthName": "Sep", "noOfLicenses": 11 } }], "11": [{ "id": 11, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 11, "monthName": "Oct", "noOfLicenses": 7 } }] } }

期望输出

{"groupedResourceDtos": { "resourceName": "Resource PopCheck", "groupedMonths": [{ "id": 9, "monthName": "Aug", "noOfLicenses": 8 },{ "id": 10, "monthName": "Sep", "noOfLicenses": 11 },{ "id": 11, "monthName": "Oct", "noOfLicenses": 7 }] }}

转换实现(JavaScript示例)

下面是一个实用的代码片段,帮你完成格式转换:

// 你的原始输入数据
const inputData = {
  "groupedResourceDtos": { 
    "Resource PopCheck": { 
      "9": [{ "id": 9, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 9, "monthName": "Aug", "noOfLicenses": 8 } }], 
      "10": [{ "id": 10, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 10, "monthName": "Sep", "noOfLicenses": 11 } }], 
      "11": [{ "id": 11, "resourceName": "Resource PopCheck", "groupedMonths": { "id": 11, "monthName": "Oct", "noOfLicenses": 7 } }] 
    } 
  }
};

// 执行转换
const convertFormat = (input) => {
  // 获取唯一的resourceName(如果有多个资源组,可以扩展为循环处理)
  const [resourceName] = Object.keys(input.groupedResourceDtos);
  const resourceGroup = input.groupedResourceDtos[resourceName];
  
  // 提取所有groupedMonths条目
  const groupedMonths = Object.values(resourceGroup)
    .map(itemArray => itemArray[0].groupedMonths);
  
  // 返回目标结构
  return {
    groupedResourceDtos: {
      resourceName,
      groupedMonths
    }
  };
};

// 转换并打印结果
const outputData = convertFormat(inputData);
console.log(JSON.stringify(outputData, null, 2));

代码说明

  • 首先通过Object.keys获取groupedResourceDtos的键,也就是我们需要的resourceName;
  • 接着遍历资源组下的所有子项("9"、"10"、"11"),每个子项都是一个包含单个对象的数组,我们取出数组第一个元素的groupedMonths字段;
  • 最后将resourceName和收集到的groupedMonths数组组合成你需要的格式。

如果你的输入里有多个资源组(比如groupedResourceDtos下有多个不同的resourceName键),可以把转换逻辑改成循环处理每个资源,生成一个数组结果,比如:

const convertMultipleGroups = (input) => {
  return {
    groupedResourceDtos: Object.entries(input.groupedResourceDtos).map(([resourceName, resourceGroup]) => {
      const groupedMonths = Object.values(resourceGroup)
        .map(itemArray => itemArray[0].groupedMonths);
      return { resourceName, groupedMonths };
    })
  };
};

这样就能处理多个资源组的情况啦!

内容的提问来源于stack exchange,提问作者Narayana Rao Kancharana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:12:33