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

如何通过命令行(JQ、json2csv、Python等)将嵌套JSON转为CSV

问题

已完成JSON数据的获取和过滤,现在需要将包含9个俱乐部字段、52个球员字段的复杂嵌套JSON转换为CSV格式。目前只能依赖在线JSON转CSV工具,该工具提供Python API(推测基于Python模块开发),希望通过脚本实现自动化转换。

解决方案

针对嵌套JSON转CSV的需求,核心是将嵌套结构扁平化:每个球员对应CSV的一行,俱乐部字段重复填充到对应球员的行中。以下提供两种Python实现方案,适配复杂嵌套场景:

方案1:使用Pandas(推荐,快速处理嵌套)

Pandas的json_normalize方法可以自动展开嵌套数组和字段,非常适合处理俱乐部-球员这类层级结构:

import pandas as pd
import json

# 1. 加载过滤后的JSON文件
with open("filtered_clubs.json", "r", encoding="utf-8") as f:
    club_data = json.load(f)

# 2. 扁平化嵌套数据:展开players数组,保留所有俱乐部字段
# 替换meta列表为你实际的9个俱乐部字段名称
club_fields = ["club_id", "club_name", "foundation_year", "club_city", "coach_name", "league", "stadium", "capacity", "club_rating"]
df = pd.json_normalize(
    club_data,
    record_path="players",  # 指定要展开的球员数组路径
    meta=club_fields        # 指定需要保留的俱乐部字段
)

# 3. 导出为CSV
df.to_csv("club_players.csv", index=False, encoding="utf-8-sig")

如果球员字段存在更深层次的嵌套(如player.stats.goals),可以通过修改record_path或在meta中指定嵌套路径(如meta=[["club", "id"], ["club", "name"]])来处理。

方案2:使用原生CSV模块(无依赖,完全自定义)

如果不想引入Pandas依赖,可以用Python原生csv模块手动遍历数据,合并俱乐部与球员字段:

import json
import csv

# 1. 加载JSON数据
with open("filtered_clubs.json", "r", encoding="utf-8") as f:
    club_data = json.load(f)

# 2. 定义所有输出字段:俱乐部字段 + 球员字段
club_fields = ["club_id", "club_name", "foundation_year", "club_city", "coach_name", "league", "stadium", "capacity", "club_rating"]
# 替换为你实际的52个球员字段名称
player_fields = ["player_id", "player_name", "position", "age", "nationality", ...]
all_fields = club_fields + player_fields

# 3. 写入CSV文件
with open("club_players.csv", "w", newline="", encoding="utf-8-sig") as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=all_fields)
    writer.writeheader()

    # 遍历每个俱乐部,再遍历其下的球员
    for club in club_data:
        # 提取当前俱乐部的所有字段值
        club_info = {field: club.get(field) for field in club_fields}
        # 处理每个球员,合并俱乐部信息与球员信息
        for player in club.get("players", []):
            row = {**club_info, **player}
            writer.writerow(row)

关于在线工具的Python API

如果希望直接使用在线工具的API,只需按照其文档调用接口即可——本质上这类工具也是基于上述类似的Python模块实现的。自己编写脚本的优势是无需依赖外部服务,数据处理更安全、灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:33:24