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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:27:03