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

如何用Python在POST请求中迭代处理多个JSON对象

修改后的批量POST请求脚本

以下脚本可遍历commandoutputid.json中的所有JSON对象,为每个对象单独发起POST请求,同时支持两种常见的JSON文件存储格式:

#! /usr/bin/env python3
import requests
import json
from requests.structures import CaseInsensitiveDict

# 目标API地址
url = 'https://...'

# 请求头配置
headers = CaseInsensitiveDict()
headers["Accept"] = "plain/text"
headers["Authorization"] = "Bearer Token"

# --------------------------
# 方式1:JSON文件为数组格式(如 [{"key":val}, {"key":val}, ...])
# --------------------------
with open('commandoutputid.json', 'r') as json_file:
    json_objects = json.load(json_file)

# --------------------------
# 方式2:JSON文件为每行一个独立JSON对象(JSON Lines格式)
# 若使用此格式,注释方式1代码,取消注释下面的代码
# --------------------------
# json_objects = []
# with open('commandoutputid.json', 'r') as json_file:
#     for line in json_file:
#         line = line.strip()
#         if line:  # 跳过空行
#             json_objects.append(json.loads(line))

# 遍历每个JSON对象发起请求
for idx, obj in enumerate(json_objects, 1):
    print(f"正在处理第 {idx} 个对象...")
    try:
        # 直接传入JSON对象,requests会自动完成序列化
        response = requests.post(url, json=obj, headers=headers, verify=False)
        response.raise_for_status()  # 捕获HTTP错误状态码
        
        # 追加写入响应结果,避免覆盖历史数据
        with open("backup_output.txt", "ab") as f:
            f.write(f"=== 第 {idx} 个请求响应 ===\n".encode('utf-8'))
            f.write(response.content)
            f.write(b"\n\n")
        
        print(f"第 {idx} 个请求处理完成,状态码:{response.status_code}")
        print(f"响应内容:{response.content.decode('utf-8')}\n")
    except Exception as e:
        print(f"第 {idx} 个请求失败:{str(e)}\n")
        continue

关键改动说明

  • 精简冗余代码:移除原脚本中turtle、lib2to3等无关导入模块,减少代码冗余
  • 多格式适配:提供两种JSON文件读取方式,覆盖批量JSON数据的常见存储格式
  • 批量遍历处理:通过enumerate遍历所有JSON对象,同时记录序号方便跟踪处理进度
  • 异常容错:捕获请求过程中的异常,避免单个请求失败导致整个脚本终止
  • 结果持久化优化:每个请求的响应结果以追加方式写入文件,保留所有请求的历史响应数据

内容的提问来源于stack exchange,提问作者John Watkins IT Professional

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:20:26