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

如何在Python中扁平化包含多层嵌套数组的JSON结构?

解决方案

方案1:使用pandas.json_normalize(固定结构场景推荐)

你之前用json_normalize没有成功,大概率是没有正确指定多层嵌套数组的record_path参数和上层需要保留的元字段meta参数。针对你给出的JSON结构,实现代码如下:

import pandas as pd
import json

# 加载本地JSON文件,也可以直接传接口返回的JSON对象
with open("your_json_file.json", "r", encoding="utf-8") as f:
    raw_data = json.load(f)

# 示例为按最细粒度upstreamTables展开,每行对应一个表,保留所有上层关联字段
df = pd.json_normalize(
    raw_data["data"]["workbooks"],
    # 嵌套数组的层级路径,从当前workbook层级往下定位
    record_path=["embeddedDatasources", "upstreamTables"],
    # 需要保留的上层字段,嵌套结构用列表指定层级
    meta=[
        "projectName",
        ["site", "name"],
        "createdAt",
        "updatedAt",
        ["owner", "name"],
        ["owner", "username"],
        ["embeddedDatasources", "name"],
        ["embeddedDatasources", "upstreamDatasources", 0, "owner", "username"]
    ],
    # 自定义扁平化后字段的分隔符,默认是点,这里改成下划线更易读
    sep="_"
)

# 可以直接导出为Excel/CSV,或者转成字典列表使用
print(df.head())
flat_records = df.to_dict("records")

这个方案性能更高,输出字段完全可控,适合JSON结构固定的业务场景。

方案2:通用递归扁平化(结构不固定场景推荐)

如果你的JSON结构经常变动,不需要提前知道字段层级,可以用通用递归函数实现任意嵌套JSON的全量扁平化:

def flatten_json(nested_json, parent_key='', sep='_'):
    items = {}
    for k, v in nested_json.items():
        new_key = f"{parent_key}{sep}{k}" if parent_key else k
        if isinstance(v, dict):
            items.update(flatten_json(v, new_key, sep=sep))
        elif isinstance(v, list):
            records = []
            base_item = items.copy()
            for elem in v:
                if isinstance(elem, (dict, list)):
                    flat_elem = flatten_json(elem, new_key, sep=sep)
                    records.append({**base_item, **flat_elem})
                else:
                    records.append({**base_item, new_key: elem})
            return records
        else:
            items[new_key] = v
    return items

# 使用示例
with open("your_json_file.json", "r", encoding="utf-8") as f:
    raw_data = json.load(f)
flat_result = flatten_json(raw_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:12:01