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

如何将飞镖API的嵌套JSON数据转换并存储为CSV文件

解决方案:将嵌套飞镖API JSON转换为CSV格式

我懂你现在的困境——能遍历JSON结构但不知道怎么精准抓需要的字段存成CSV对吧?咱们直接上可行的方案,一步步来搞定它。

首先,先明确咱们要提取的字段(结合你给的JSON结构做了点小调整,因为有些字段名和你描述的不太一致,我会在代码里标注):

  • season的start_date(你提到的start_time在JSON里season对象没有,我猜你要么是笔误,要么是想拿sport_event本身的start_time,代码里可以轻松改)
  • 两位参赛者的名字(区分主客场)
  • sport_event_status里的状态字段(你说的id和name在给定的JSON里不存在,我提取了status和match_status,如果实际数据有对应字段可以替换)
  • winner_id

接下来是完整的Python代码,直接就能用:

import json
import csv

# 加载你的JSON文件,替换成你的文件路径
with open('path_of_file.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 定义CSV表头,根据需求可以自行修改
csv_headers = [
    "赛季开始日期",
    "主场参赛者",
    "客场参赛者",
    "赛事状态",
    "比赛状态",
    "获胜者ID"
]

# 用来存提取后的数据
extracted_rows = []

# 遍历每个赛事摘要
for summary in data['summaries']:
    sport_event = summary['sport_event']
    event_status = summary['sport_event_status']
    
    # 提取赛季的开始日期(如果要sport_event的start_time,改成sport_event['start_time']即可)
    season_start = sport_event['sport_event_context']['season']['start_date']
    
    # 从参赛者列表里区分主客场名字
    competitors = sport_event['competitors']
    home_name = next(comp['name'] for comp in competitors if comp['qualifier'] == 'home')
    away_name = next(comp['name'] for comp in competitors if comp['qualifier'] == 'away')
    
    # 提取赛事状态相关字段
    event_status_val = event_status['status']
    match_status_val = event_status['match_status']
    
    # 提取获胜者ID
    winner_id = event_status['winner_id']
    
    # 把当前赛事的所有字段整理成一行
    extracted_rows.append([
        season_start,
        home_name,
        away_name,
        event_status_val,
        match_status_val,
        winner_id
    ])

# 写入CSV文件
with open('飞镖赛事数据.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(csv_headers)  # 写表头
    writer.writerows(extracted_rows)  # 写所有数据行

print("CSV文件生成完成!")

代码说明:

  1. 安全加载文件:用with open代替直接打开文件,避免忘记关闭文件的问题
  2. 精准提取嵌套字段:逐层访问JSON的嵌套结构,比如sport_event['sport_event_context']['season']['start_date']就是直接拿到赛季的开始日期
  3. 区分主客场参赛者:用next()函数从参赛者列表里筛选出主客场的名字,比循环遍历更简洁
  4. CSV写入:用Python内置的csv模块,确保生成的CSV格式规范,支持中文编码

小调整建议:

  • 如果确实需要sport_event的start_time,把season_start = sport_event['sport_event_context']['season']['start_date']改成season_start = sport_event['start_time']就行
  • 如果你的JSON里sport_event_status真的有id和name字段,直接替换代码里对应的键名即可
  • 如果有特殊的参赛者情况(比如多于两个),可以调整筛选参赛者的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:02:54