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

如何基于公共字段合并子数组?多同名数组字段合并方案咨询

合并JSON中重复键line的数组内容

问题描述

输入的JSON字符串包含多个同名的line字段,每个字段对应一个对象数组,需要将所有line字段下的对象合并到同一个line数组中。

输入Payload

{"ID":"102B0YT0","line":[{"Number":1,"quantityd":18,"Shipped":15}],"line":[{"Number":2,"quantity":58,"Shipped":8},{"lineNumber":2,"quantity":59,"Shipped":9}],"line":[{"lineNumber":3,"Ordered":11,"Shipped":17}]}

期望输出

{"ID":"102B0YT0","line":[{"Number":1,"quantityd":18,"Shipped":15},{"Number":2,"quantity":58,"Shipped":8},{"lineNumber":2,"quantity":59,"Shipped":9},{"lineNumber":3,"Ordered":11,"Shipped":17}]}

解决方案

由于标准JSON不允许重复键,直接解析会丢失前面的line数据,因此需要先以文本形式提取所有line对应的数组内容,再合并构造新的JSON对象。

JavaScript 实现

// 原始输入字符串
const inputStr = '{"ID":"102B0YT0","line":[{"Number":1,"quantityd":18,"Shipped":15}],"line":[{"Number":2,"quantity":58,"Shipped":8},{"lineNumber":2,"quantity":59,"Shipped":9}],"line":[{"lineNumber":3,"Ordered":11,"Shipped":17}]}';

// 提取所有line字段对应的数组元素
const mergedLines = [];
const lineRegex = /"line":(\[.*?\])/g;
let matchResult;
while ((matchResult = lineRegex.exec(inputStr)) !== null) {
  mergedLines.push(...JSON.parse(matchResult[1]));
}

// 解析基础对象并替换line字段
const resultObj = JSON.parse(inputStr);
resultObj.line = mergedLines;

// 输出格式化后的结果
console.log(JSON.stringify(resultObj, null, 2));

Python 实现

import re
import json

input_str = '{"ID":"102B0YT0","line":[{"Number":1,"quantityd":18,"Shipped":15}],"line":[{"Number":2,"quantity":58,"Shipped":8},{"lineNumber":2,"quantity":59,"Shipped":9}],"line":[{"lineNumber":3,"Ordered":11,"Shipped":17}]}'

# 提取所有line数组的元素
merged_lines = []
line_pattern = re.compile(r'"line":(\[.*?\])')
for match in line_pattern.finditer(input_str):
    merged_lines.extend(json.loads(match.group(1)))

# 构造结果对象
result_obj = json.loads(input_str)
result_obj['line'] = merged_lines

# 打印输出
print(json.dumps(result_obj, indent=2))

逻辑说明

  1. 文本提取:使用正则表达式从原始字符串中匹配所有"line":[]部分,解析每个数组并合并其中的元素。
  2. 构造结果:将原始JSON解析为对象(此时仅保留最后一个line),替换line字段为合并后的数组。
  3. 输出:将结果对象序列化为格式化的JSON字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:05:16