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

Python:如何为API返回的JSON列表数据分配变量

没问题!在Python里处理这种JSON数据并分配变量其实很直接,我给你分几种常见的场景来演示:

处理JSON数据并分配变量的几种方法

首先,你需要先把API返回的JSON字符串转换成Python的原生数据结构(列表+字典),之后就可以轻松提取数据到变量里了。

1. 基础方法:直接提取单个或遍历所有队伍数据

假设你已经通过API获取到了JSON数据(如果是字符串格式,先用json.loads()解析;如果用requests库调用API,直接用response.json()就能得到Python列表)。

示例代码:

import json

# 模拟API返回的JSON字符串(你可以替换成实际的API响应)
api_response_json = '''[
    {
        "team_id": "FALCONS",
        "time_data": "2018-05-06T15:25:36.9524691Z",
        "wins": 11,
        "crow_size": 19563,
        "last_game": {
            "time_data": "2018-05-06T15:17:16.0000000Z",
            "data": "4e7a-bf0c-a97e5f32f58b",
            "take_side": "NA"
        }
    },
    {
        "team_id": "CARDINALS",
        "time_data": "2018-05-06T15:25:36.9212380Z",
        "wins": 14,
        "crow_size": 26000,
        "last_game": {
            "time_data": "2018-05-06T15:17:16.0000000Z",
            "data": "cd12-ef34-gh56ij78kl90",
            "take_side": "NA"
        }
    }
]'''

# 解析JSON为Python列表
teams_list = json.loads(api_response_json)

# 提取单个队伍的变量(比如第一个队伍)
first_team = teams_list[0]
falcon_id = first_team["team_id"]
falcon_wins = first_team["wins"]
falcon_crowd = first_team["crow_size"]
# 处理嵌套的last_game数据
falcon_last_game_time = first_team["last_game"]["time_data"]
falcon_last_game_id = first_team["last_game"]["data"]

print(f"Falcons: {falcon_wins} wins, last game crowd {falcon_crowd}")
print(f"Last game time: {falcon_last_game_time}, ID: {falcon_last_game_id}")

# 遍历所有队伍,批量分配变量
print("\n--- All Teams ---")
for team in teams_list:
    team_id = team["team_id"]
    wins = team["wins"]
    crowd = team["crow_size"]
    last_game = team["last_game"]
    
    print(f"{team_id}: {wins} wins, last game crowd {crowd}")
    print(f"  Last game: {last_game['time_data']} (ID: {last_game['data']})\n")

2. 更结构化的方法:使用数据类(Dataclasses)

如果你的数据需要频繁使用,或者想要更清晰的结构,可以用Python的dataclasses模块来定义数据模型,这样代码可读性更高,也更易于维护。

示例代码:

from dataclasses import dataclass
from datetime import datetime
import json

# 定义嵌套的LastGame数据类
@dataclass
class LastGame:
    time_data: datetime
    data: str
    take_side: str

# 定义Team数据类
@dataclass
class Team:
    team_id: str
    time_data: datetime
    wins: int
    crow_size: int
    last_game: LastGame

# 解析JSON并转换为数据类实例
teams_list = json.loads(api_response_json)
parsed_teams = []

for team in teams_list:
    # 把ISO格式的时间字符串转换为datetime对象(方便后续时间处理)
    team_datetime = datetime.fromisoformat(team["time_data"].replace("Z", "+00:00"))
    last_game_datetime = datetime.fromisoformat(team["last_game"]["time_data"].replace("Z", "+00:00"))
    
    # 创建LastGame实例
    last_game = LastGame(
        time_data=last_game_datetime,
        data=team["last_game"]["data"],
        take_side=team["last_game"]["take_side"]
    )
    
    # 创建Team实例
    parsed_team = Team(
        team_id=team["team_id"],
        time_data=team_datetime,
        wins=team["wins"],
        crow_size=team["crow_size"],
        last_game=last_game
    )
    
    parsed_teams.append(parsed_team)

# 使用数据类实例
print("--- Structured Team Data ---")
for team in parsed_teams:
    print(f"Team: {team.team_id}")
    print(f"Recorded at: {team.time_data.strftime('%Y-%m-%d %H:%M:%S')}")
    print(f"Total wins: {team.wins}")
    print(f"Last game on: {team.last_game.time_data.strftime('%Y-%m-%d %H:%M:%S')} (ID: {team.last_game.data})\n")

注意事项

  • 如果API返回的JSON可能存在缺失的键(比如某个队伍没有last_game数据),建议使用字典的get()方法来避免KeyError,比如team.get("last_game", {})。
  • 如果用requests库调用API,不需要手动用json.loads(),直接用response.json()就能得到解析后的Python对象。

内容的提问来源于stack exchange,提问作者Jr David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:17