如何使用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)
逻辑说明
- 先提取统一的
document_id(假设所有输入数据的ID相同,若需支持多ID可先按ID分组再处理)。 - 用
party_name_map字典按party_type分类存储对应名称,方便后续快速查找。 - 遍历目标
party_type,逐个生成party X和对应的name字段:- 存在对应名称时,根据数量返回列表或单个值;
- 无对应值时,
name设为N/A。
内容的提问来源于stack exchange,提问作者XD Sauaame
相关产品推荐
相关产品推荐

