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

如何将已扁平化的JSON文件转换为Excel可识别的格式?

如何修改JSON扁平化代码以适配Excel导入需求

你遇到的核心问题是:当前的扁平化代码把多个实体的属性都塞进了单个字典,用数字前缀(如0_parcel_xxx、1_parcel_xxx)区分不同实体,导致Excel导入时无法识别为结构化表格(把每个键值对拆成了单独的行列)。我们需要调整代码,让每个实体成为独立的字典,最终输出一个字典列表,这样Excel就能正确识别为多行数据,相同属性自动对应列。

修改后的扁平化代码

我调整了原函数的逻辑,让它能处理最外层的列表结构,把每个实体单独扁平化,最终返回字典列表:

import json

def flatten_json(y):
    def flatten(x, name=''):
        out = {}
        # 处理字典类型的嵌套
        if type(x) is dict:
            for key in x:
                # 递归扁平化子元素,拼接键名
                flattened_sub = flatten(x[key], name + key + '_')
                out.update(flattened_sub)
        # 处理列表类型的嵌套(内部列表仍保留索引前缀)
        elif type(x) is list:
            idx = 0
            for item in x:
                flattened_sub = flatten(item, name + str(idx) + '_')
                out.update(flattened_sub)
                idx += 1
        # 基础类型,直接存入结果
        else:
            out[name[:-1]] = x
        return out
    
    # 核心调整:如果输入是列表(多个实体),逐个扁平化后返回列表
    if isinstance(y, list):
        return [flatten(item) for item in y]
    # 单个实体则返回扁平化后的字典
    else:
        return flatten(y)

代码说明

  1. 原问题的根源:你的旧代码把所有嵌套结构(包括多个实体的列表)都合并到了一个字典里,导致不同实体的属性用数字前缀区分,Excel无法识别为多行。
  2. 关键改进:新增了对最外层列表的判断,遍历每个实体单独扁平化,最终输出一个字典列表——每个字典对应一个parcel的所有属性,没有多余的数字前缀。
  3. 内部列表处理:对于实体内部的列表(比如sections里的嵌套列表),仍然保留索引前缀(如sections_0_0_0_buildingId),这能保留原始的嵌套结构信息,同时不影响Excel识别。

使用示例

假设你的原始JSON数据是包含多个parcel的列表,用法如下:

# 示例原始数据(模拟你的嵌套结构)
original_data = [
    {
        "parcel": {
            "mapicon": None,
            "mapiconselected": None,
            "sections": [[[
                {"buildingId": 123456, "id": 123, "LandUseCode": "R00", "Neighborhood": "S110",
                 "landUseCodeDescription": "SINGLE", "LandSize": "1 LOT", "Exemption": None,
                 "Tax_MunDist": "NYC", "SaleDate": "05/10/2021"}
            ]]]
        }
    },
    {
        "parcel": {
            "mapicon": None,
            "mapiconselected": None,
            "sections": [[[
                {"buildingId": 56789, "id": 321, "LandUseCode": "Z00", "Neighborhood": "D110",
                 "landUseCodeDescription": "SINGLE", "LandSize": "2 LOT", "Exemption": None,
                 "Tax_MunDist": "NYC", "SaleDate": "09/10/2021"}
            ]]]
        }
    }
]

# 扁平化处理
flattened_parcels = flatten_json(original_data)

# 导出为JSON文件
with open('parcels_for_excel.json', 'w') as f:
    json.dump(flattened_parcels, f, indent=2)

Excel导入步骤

导出的JSON文件可以直接被Excel识别为结构化表格:

  1. 打开Excel,切换到数据选项卡
  2. 点击获取数据 → 从文件 → 从JSON
  3. 选择导出的parcels_for_excel.json,Excel会自动解析为表格:每个parcel对应一行,每个属性对应一列
  4. 加载后即可直接使用高级筛选功能

这样就完美解决了Excel无法识别扁平化格式的问题,同时保留了所有实体数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:57:36