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

如何使用Python格式化指定结构的JSON响应?

如何用Python格式化JSON响应?

我的JSON数据如下:

data = [
    {"document_id":"FT_3860001798686","party_type":"1","name":"LEE, GABRIEL"},
    {"document_id":"FT_3860001798686","party_type":"1","name":"MORRISON, VERNA"},
    {"document_id":"FT_3860001798686","party_type":"2","name":"PIONEER S&L ASSOCIATION"}
]

期望输出:

data = {
    "document_id":"FT_3860001798686",
    "party 1":"1",
    "name":["LEE, GABRIEL", "MORRISON, VERNA"],
    "party 2":"2",
    "name":["PIONEER S&L ASSOCIATION"]
}

特殊情况说明:

如果某个party_type没有对应值,对应的name要显示为N/A,示例如下:

data = {
    "document_id":"FT_3860001798686",
    "party 1":"1",
    "name":["LEE, GABRIEL", "MORRISON, VERNA"],
    "party 2":"2",
    "name": "N/A"
}

解决方案

可以通过遍历原始数据按party_type分组收集名称,再构建目标格式的字典。下面是具体实现:

代码实现

def format_json_response(raw_data):
    if not raw_data:
        return {}
    
    # 初始化结果字典,提取统一的document_id(假设所有数据ID一致)
    result = {"document_id": raw_data[0]["document_id"]}
    # 用字典存储每个party_type对应的名称列表
    party_name_map = {}
    
    # 遍历原始数据,分组收集名称
    for item in raw_data:
        pt = item["party_type"]
        name = item["name"]
        if pt not in party_name_map:
            party_name_map[pt] = []
        party_name_map[pt].append(name)
    
    # 定义需要处理的party类型(可根据实际需求调整)
    target_parties = ["1", "2"]
    for party in target_parties:
        # 添加"party X"字段
        result[f"party {party}"] = party
        # 处理对应的name字段
        if party in party_name_map and party_name_map[party]:
            # 多个名称返回列表,单个则返回字符串(或统一返回列表,按需修改)
            result["name"] = party_name_map[party] if len(party_name_map[party]) > 1 else party_name_map[party][0]
        else:
            result["name"] = "N/A"
    
    return result

# 测试示例数据
raw_data = [
    {"document_id":"FT_3860001798686","party_type":"1","name":"LEE, GABRIEL"},
    {"document_id":"FT_3860001798686","party_type":"1","name":"MORRISON, VERNA"},
    {"document_id":"FT_3860001798686","party_type":"2","name":"PIONEER S&L ASSOCIATION"}
]

formatted_result = format_json_response(raw_data)
print(formatted_result)

逻辑说明

  1. 先提取统一的document_id(假设所有输入数据的ID相同,若需支持多ID可先按ID分组再处理)。
  2. 用party_name_map字典按party_type分类存储对应名称,方便后续快速查找。
  3. 遍历目标party_type,逐个生成party X和对应的name字段:
    • 存在对应名称时,根据数量返回列表或单个值;
    • 无对应值时,name设为N/A。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:54:18