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

如何拆分含数组对象的JSON结构并保留其余键值对

实现JSON数组键的拆分并保留其他键值对

这个需求其实挺典型的——把某个数组类型的键拆分成多个独立对象,同时保留其他所有键值不变。我给你用两种常用语言(JavaScript和Python)来实现,你可以直接套用~

JavaScript 实现

先看代码,注释已经写得很清楚了:

function splitJsonByArrayKey(originalObj, targetKey) {
  // 先拿到要拆分的数组
  const arrayToSplit = originalObj[targetKey];
  if (!Array.isArray(arrayToSplit)) {
    throw new Error(`指定的键 ${targetKey} 不是数组类型`);
  }
  
  // 遍历数组,生成每个新对象
  return arrayToSplit.map(item => {
    // 复制原对象的所有键值(用展开运算符避免修改原对象)
    return {
      ...originalObj,
      // 把目标键替换成当前数组元素
      [targetKey]: item
    };
  });
}

// 测试你的示例
const originalJson = '{"key1": "val1", "key2": "val2", "key3": [{"k1": "v1"}, {"k2": "v2"}]}';
const originalObj = JSON.parse(originalJson);
const result = splitJsonByArrayKey(originalObj, 'key3');

// 输出结果
console.log(JSON.stringify(result[0], null, 2));
console.log(JSON.stringify(result[1], null, 2));

运行后你会得到两个符合要求的对象:

{"key1": "val1", "key2": "val2", "key3": {"k1": "v1"}}
{"key1": "val1", "key2": "val2", "key3": {"k2": "v2"}}

Python 实现

如果你用Python处理数据,这个写法同样通用:

def split_json_by_array_key(original_obj, target_key):
    array_to_split = original_obj.get(target_key)
    if not isinstance(array_to_split, list):
        raise ValueError(f"指定的键 {target_key} 不是列表类型")
    
    result = []
    for item in array_to_split:
        # 复制原字典的所有键值(用字典推导式避免修改原对象)
        new_obj = {k: v for k, v in original_obj.items()}
        # 替换目标键的值为当前列表元素
        new_obj[target_key] = item
        result.append(new_obj)
    
    return result

# 测试示例
original_json = '{"key1": "val1", "key2": "val2", "key3": [{"k1": "v1"}, {"k2": "v2"}]}'
import json
original_obj = json.loads(original_json)
result = split_json_by_array_key(original_obj, 'key3')

# 打印结果
print(json.dumps(result[0], indent=2))
print(json.dumps(result[1], indent=2))

关键点说明

  • 不管用哪种语言,核心都是复制原对象的所有键值,再替换目标数组键为单个元素
  • 代码里都做了类型检查,避免传入非数组/列表的情况报错
  • 用了不修改原对象的方式(展开运算符/字典推导式),保证原数据的完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:14:17