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

基于ID匹配条件合并JSON并生成PATCH/POST请求的需求实现

实现基于ID存在性生成PATCH/POST请求的方案

需求说明

根据两个输入数据集生成请求:

  • 若ID在Input1中存在,使用PATCH方法
  • 若ID在Input1中不存在,使用POST方法
  • 同一ID的所有value值需合并,用分号(;)分隔

输入数据

Input1

{
  "prod": [
    {
      "Id": "123456",
      "value": "ABC"
    },
    {
      "Id": "123456",
      "value": "DEF"
    },
    {
      "Id": "987654",
      "value": "DEF"
    }
  ]
}

Input2

{
  "ProdInfo": {
    "Prod": [
      {
        "Id": "123456",
        "value1": "LMN"
      },
      {
        "Id": "123456",
        "value1": "OPQ"
      },
      {
        "Id": "654321",
        "value1": "OPQ"
      }
    ]
  }
} 

实现代码(Python)

import json
from collections import defaultdict

# 解析输入数据
input1 = json.loads('''{
  "prod": [
    {
      "Id": "123456",
      "value": "ABC"
    },
    {
      "Id": "123456",
      "value": "DEF"
    },
    {
      "Id": "987654",
      "value": "DEF"
    }
  ]
}''')

input2 = json.loads('''{
  "ProdInfo": {
    "Prod": [
      {
        "Id": "123456",
        "value1": "LMN"
      },
      {
        "Id": "123456",
        "value1": "OPQ"
      },
      {
        "Id": "654321",
        "value1": "OPQ"
      }
    ]
  }
} ''')

# 收集Input1中的ID及对应value
id_values = defaultdict(list)
input1_ids = set()
for item in input1['prod']:
    id_val = item['Id']
    input1_ids.add(id_val)
    id_values[id_val].append(item['value'])

# 合并Input2中的value1到对应ID
for item in input2['ProdInfo']['Prod']:
    id_val = item['Id']
    id_values[id_val].append(item['value1'])

# 生成请求列表(仅保留Input2涉及的ID)
requests = []
target_ids = {item['Id'] for item in input2['ProdInfo']['Prod']}
for id_val, values in id_values.items():
    if id_val not in target_ids:
        continue
    method = 'PATCH' if id_val in input1_ids else 'POST'
    requests.append({
        "method": method,
        "body": {
            "ID": id_val,
            "Value": ';'.join(values)
        }
    })

# 构建最终输出结构
output = {
    "output": [
        {
            "Request": requests
        }
    ]
}

# 打印结果
print(json.dumps(output, indent=2))

输出结果

{
  "output": [
    {
      "Request": [
        {
          "method": "PATCH",
          "body": {
            "ID": "123456",
            "Value": "ABC;DEF;LMN;OPQ"
          }
        },
        {
          "method": "POST",
          "body": {
            "ID": "654321",
            "Value": "OPQ"
          }
        }
      ]
    }
  ]
}

说明

  • 代码过滤了Input1中存在但Input2未涉及的ID(如987654),与期望输出保持一致
  • 用defaultdict高效收集同一ID的所有value值,再通过分号拼接成字符串
  • 借助集合快速判断ID是否存在于Input1中,以此确定请求方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:22:15