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

按语言维度动态生成JSON数组的JSON转换实现咨询

按语言维度动态生成JSON数组的JSON转换实现咨询

嘿,这个转换需求的核心其实就是按语言维度做分组聚合,我给你分享一套通用的实现逻辑,再拿JavaScript举个具体的代码例子,不管你用什么语言,思路都是相通的~

核心逻辑步骤

先理清楚转换的核心思路,其实就三步:

  • 遍历输入里的每一个Items元素,提取它的optionNumber和对应的ListItems语言条目
  • 用一个临时的“语言-选项列表”映射(比如JS里的普通对象、Java里的HashMap)来做分组:把每个语言对应的optionNumber和value存到对应语言的数组里
  • 最后把这个映射转换成你需要的Response数组格式

JavaScript代码实现示例

下面是直接可以运行的JS代码,完全匹配你的输入输出需求:

// 模拟你的输入request对象
const request = {
  "Items": [
    {
      "id": "151",
      "optionNumber": 1,
      "ListItems": [
        { "language": "en", "value": "Aruba" },
        { "language": "en-gb", "value": "Arubagb" },
        { "language": "fr-fr", "value": "" }
      ]
    },
    {
      "id": "152",
      "optionNumber": 2,
      "ListItems": [
        { "language": "en", "value": "Afganistan" },
        { "language": "en-us", "value": "" }
      ]
    }
  ]
};

// 1. 创建临时映射,用来按语言分组存储选项信息
const languageOptionMap = {};

// 遍历每个Item条目
request.Items.forEach(item => {
  const currentOptionNum = item.optionNumber;
  // 遍历当前Item下的所有语言-值条目
  item.ListItems.forEach(listItem => {
    const { language, value } = listItem;
    // 如果映射里还没有这个语言,先初始化对应的数组
    if (!languageOptionMap[language]) {
      languageOptionMap[language] = [];
    }
    // 将当前选项的信息添加到对应语言的数组中
    languageOptionMap[language].push({
      optionNumber: currentOptionNum,
      optionValue: value
    });
  });
});

// 2. 将临时映射转换为要求的Response结构
const output = {
  "Response": Object.entries(languageOptionMap).map(([lang, options]) => ({
    language: lang,
    optionValues: options
  }))
};

// 打印结果,格式和你要的完全一致
console.log(JSON.stringify(output, null, 2));

关键细节说明

  • 空值处理:代码会保留所有空的value(比如fr-fr的空值),完全符合你的示例输出
  • 自动聚合:如果同一个语言在多个Items里出现,所有对应的选项都会被自动聚合到同一个语言的optionValues数组中
  • 通用适配:这个逻辑可以轻松移植到其他语言,比如Java用HashMap<String, List<自定义Option类>>,Python用字典列表,核心都是“按语言分组”

备注:内容来源于stack exchange,提问作者Shreyansh Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:13:12