Python如何将REST接口返回的JSON重映射为目标格式
处理方案
实现逻辑
- 直接解析接口返回的JSON数据,无需先存储到本地文件再读取,减少不必要的IO操作
- 原始返回中
Actual、Start、NumScrapsList三个数组的下标是一一对应的,遍历所有索引,将对应位置的三个字段组合为单个对象即可 - 重组完成后将结构写入目标JSON文件
完整可运行代码
import requests import json # 保留你原有的请求参数配置 url = "你的实际接口地址" headers = {} # 替换为你的实际请求头 data = {} # 替换为你的实际请求体 with requests.post(url, headers=headers, data=data) as r: r.raise_for_status() # 直接将响应内容解析为JSON对象 raw_data = r.json() # 取出原始的三个平行数组 actual_list = raw_data["Outputs"]["Actual"] start_list = raw_data["Outputs"]["Start"] num_scraps_list = raw_data["Outputs"]["NumScrapsList"] output_list = [] # 按索引遍历三个数组,组装新对象 for i in range(len(actual_list)): # 如果你示例中第一个Start值需要去掉「2017-」前缀,打开下一行注释替换即可 # start_val = start_list[i].removeprefix("2017-") start_val = start_list[i] output_list.append({ "NumScrapsList": num_scraps_list[i], "Actual": actual_list[i], "Start": start_val }) # 构造最终输出结构 result = { "Outputs": output_list } # 写入格式化后的JSON文件 with open("outfile.json", "w", encoding="utf-8") as f: json.dump(result, f, ensure_ascii=False, indent=4)
注意事项
- 如果接口返回的JSON体积特别大需要流式处理,可更换为ijson这类增量解析库,常规场景直接用
r.json()处理足够 - 处理前可先校验三个数组的长度是否一致,避免出现下标越界错误
- 你给出的期望输出中第一个
Start值缺少「2017-」前缀,如果是手误直接保留原样取值即可,如果确实需要裁剪字段,打开代码中对应的字符串处理注释即可
内容的提问来源于stack exchange,提问作者Maurip00
相关产品推荐
相关产品推荐

