用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

嵌套JSON转Excel:三个在线工具都报错,Pandas四行代码搞定

数据格式转换场景速查表

转换场景难度最快方案适用条件
JSON ↔ CSV 互转★☆在线工具(flattened结构)扁平JSON、无嵌套、小于10MB
嵌套JSON → 展平CSV★★★Python pandas.json_normalize任意嵌套层级、任意大小
XML → JSON / CSV★★☆在线工具 / Python xmltodictXML结构规范、不含命名空间陷阱
Excel → JSON★☆在线工具 / Excel公式拼接单sheet、表头规范
CSV → Excel(不乱码)★☆Excel Power Query导入CSV含中文/特殊字符
批量多文件格式统一★★☆Python脚本 或 命令行jq10个以上文件、需重复执行

一、在线工具:十秒出结果,适合90%的简单转换

如果你的数据没有嵌套结构、体积不大(小于10MB),在线工具是最快的选择。下面六个工具覆盖了JSON/CSV/XML/YAML之间的所有转换方向。

工具支持转换方向亮点局限
filuni.comJSON ↔ YAML ↔ XML ↔ CSV 全方向纯本地处理,数据不上传嵌套JSON转CSV只做一层展平
convertcsv.comCSV ↔ JSON ↔ XML ↔ SQL ↔ Excel支持自定义分隔符、字段映射界面英文,嵌套处理有限
wejson.cnJSON ↔ CSV 双向中文界面,简单直接只有JSON和CSV两种格式
itoolspro.comJSON ↔ XML ↔ CSV ↔ YAML 全方向支持文件上传,自动检测格式大文件可能有性能瓶颈
allkit.co嵌套JSON → 展平CSV(核心卖点)专门处理嵌套JSON展平仅JSON→CSV一个方向
csvall.cnCSV ↔ Excel ↔ JSON ↔ XML ↔ SQL纯前端,支持批量文件CSV为核心,JSON方向功能偏弱

在线工具的"本地处理"标签很重要:如果工具标注了"纯前端处理"或"数据不上传服务器",说明你的数据只在浏览器里运行,不会经过第三方服务器。filuni.com、allkit.co、csvall.cn 都明确标注了这一点。涉及敏感数据时优先选这类工具。

二、嵌套JSON转CSV:在线工具搞不定的终极方案

这是数据格式转换里最常见也最容易翻车的场景。API返回的JSON通常长这样:

典型的嵌套JSON结构——在线工具大概率处理不了

{"orders": [{"order_id": "20260701001","customer": {"name": "张三","email": "zhangsan@email.com","address": {"city": "深圳", "district": "南山区"}},"items": [{"sku": "A001", "name": "机械键盘", "qty": 1, "price": 299},{"sku": "A002", "name": "鼠标", "qty": 2, "price": 89}],"total": 477,"created_at": "2026-07-01T10:30:00Z"}// ... 可能还有几百条]}

这种结构有三个难点:①customer对象嵌套一层;②customer.address又嵌套一层;③items是数组,一条订单里有多个商品行。在线工具处理这种结构要么报错,要么把数组转成一坨不可读的字符串。

Python方案:json_normalize 自动展平嵌套对象 + 手动展开数组

import pandas as pdimport json# 读取JSON文件with open("orders.json", "r", encoding="utf-8") as f:data = json.load(f)orders = data["orders"]# 第一步:展平嵌套对象(customer.name → customer_name)# json_normalize自动处理customer和customer.address两层嵌套df = pd.json_normalize(orders,record_path=None,           # 主记录就是orders本身meta=[],                    # 不需要额外元数据sep="_"                     # 嵌套键用下划线连接)# 结果列名:order_id, customer_name, customer_email,#          customer_address_city, customer_address_district,#          items, total, created_at# 第二步:展开items数组,每个商品一行# explode把数组拆成多行,类似SQL的UNNESTdf_exploded = df.explode("items")# 第三步:把items里的字典字段拆成独立列items_df = pd.json_normalize(df_exploded["items"])# items_df列名:sku, name, qty, price# 第四步:拼回去result = pd.concat([df_exploded.drop(columns=["items"]).reset_index(drop=True),items_df], axis=1)# 导出result.to_csv("orders_flat.csv", index=False, encoding="utf-8-sig")print(f"完成!{len(orders)}条订单 → {len(result)}行CSV数据")

四步操作:展平对象→展开数组→拆数组字段→拼接导出。无论JSON嵌套多深,这个流程都能处理。如果数组里还有数组(items里每个item还有子数组),再套一层explode就行。

1 - 嵌套JSON转Excel:三个在线工具都报错,Pandas四行代码搞定 - UC建站系统

json_normalize的三个常用参数

sep="_":嵌套键的连接符,默认是".",改成"_"避免和JSON路径混淆。
record_path="items":如果JSON结构是{ "data": [ {...}, {...} ] },record_path="data"直接从data数组开始展平。
max_level=2:限制展平深度,超过这个层级的嵌套保持为字典不展开,避免列数爆炸。

三、XML转JSON/CSV:Python一行代码搞定,但有个坑

XML → JSON → CSV,三步串起来

import xmltodictimport jsonimport pandas as pd# XML → 字典(一行代码)with open("data.xml", "r", encoding="utf-8") as f:obj = xmltodict.parse(f.read())# 字典 → JSON字符串(可选,方便查看中间结果)json_str = json.dumps(obj, ensure_ascii=False, indent=2)# 提取实际数据数组(取决于你的XML结构)# 假设XML结构是 ...records = obj["root"]["items"]["item"]# 转DataFrame → 导出CSVdf = pd.DataFrame(records)df.to_csv("data.csv", index=False, encoding="utf-8-sig")

XML转JSON的常见坑:命名空间

很多XML文件里带命名空间,比如<ns1:order xmlns:ns1="http://example.com">。xmltodict默认会保留命名空间前缀,导致字段名变成ns1:order_id这种带冒号的键,后面处理起来很麻烦。解决方法:xmltodict.parse(xml_str, process_namespaces=True, namespaces={"http://example.com": None})——把命名空间映射为空,字段名就干净了。

四、Excel ↔ JSON:两种方向,两种最快路径

Excel → JSON:在线工具最快

打开 wejson.cn 或 filuni.com,把Excel表格内容复制粘贴进去,选择"CSV→JSON",一键转换。如果需要批量处理多个Excel文件,用Python:pd.read_excel("data.xlsx").to_json("data.json", orient="records", force_ascii=False),一行搞定。

2 - 嵌套JSON转Excel:三个在线工具都报错,Pandas四行代码搞定 - UC建站系统

JSON → Excel:别直接双击CSV

JSON转出的CSV如果直接双击打开,中文乱码、长数字变科学计数法、日期格式全错。正确做法:打开空白Excel → "数据"选项卡 → "获取数据" → "从文件" → "从文本/CSV" → 选择文件 → 在预览窗口把"文件原始格式"选为"65001: Unicode (UTF-8)" → 加载。这样中文不乱码、数字不变形。

五、CSV导入Excel不乱码:Power Query是正解

CSV直接双击用Excel打开是数据灾难的起点——中文乱码、长数字变成1.23E+15、前导零消失、日期格式串位。这些问题都源于Excel直接打开CSV时做了自动格式推断,而这个推断经常出错。

Power Query导入CSV的四步操作

  1. 打开空白Excel → 顶部菜单"数据" → "获取数据" → "从文件" → "从文本/CSV"
  2. 选择CSV文件后出现预览窗口。左上角"文件原始格式"下拉选 "65001: Unicode (UTF-8)"(这是UTF-8的编码代号)。分隔符默认逗号,如果CSV用制表符或分号分隔,在这里改。
  3. 点右下角"转换数据"(不是"加载"),进入Power Query编辑器。在这里你可以:把"数字"类型的列手动改成"文本"(避免长数字变科学计数法)、删除空行、拆分合并列、过滤数据。
  4. 处理好后点"关闭并上载"→ 数据以标准Excel表格形式呈现,所有格式都按你设定的来。

长数字变科学计数法的修复方法

如果你的CSV里有身份证号、订单号这类15位以上的纯数字,在Power Query编辑器里选中该列 → 左上角数据类型下拉 → 选"文本"。这样导入后就是完整的数字字符串,不会变成1.23E+17。这个操作必须在导入阶段做,数据进了Excel再改格式已经晚了——后15位已经变成了0。

3 - 嵌套JSON转Excel:三个在线工具都报错,Pandas四行代码搞定 - UC建站系统

六、批量文件格式统一:命令行 + 脚本的自动化方案

如果你有50个JSON文件要全部转成CSV,或者100个XML文件要提取特定字段转JSON,手动一个个搞不现实。

批量JSON → CSV:一个文件夹里所有JSON一键转换

import pandas as pdimport jsonimport globfor filepath in glob.glob("data/*.json"):with open(filepath, "r", encoding="utf-8") as f:data = json.load(f)# 提取实际数据(根据你的JSON结构调整)records = data.get("items", data.get("data", data))if isinstance(records, dict):records = [records]df = pd.DataFrame(records)# 输出同名CSVcsv_path = filepath.replace(".json", ".csv")df.to_csv(csv_path, index=False, encoding="utf-8-sig")print(f"OK: {filepath} → {csv_path}")print(f"全部完成,共处理 {len(glob.glob('data/*.json'))} 个文件")

命令行 jq:不需要写Python文件,一行命令JSON→CSV

# 安装jq(Linux/Mac/WSL自带或apt install jq)# 提取JSON数组中特定字段,输出CSVcat data.json | jq -r '.[] | [.id, .name, .email] | @csv' > output.csv# 如果JSON是 {"items": [...]} 结构cat data.json | jq -r '.items[] | [.id, .name, .price] | @csv' > output.csv

jq的优点是极轻量——一个几百KB的二进制文件,不需要Python环境。特别适合在服务器上临时处理数据。缺点是嵌套结构复杂时语法较难写,不如Python直观。

七、不同场景的推荐方案速查

你的场景推荐方案原因
扁平JSON转CSV,一次性的在线工具(filuni.com / wejson.cn)打开网页→粘贴→点转换→下载,30秒搞定
嵌套JSON转CSV,多层级的Python pandas.json_normalize在线工具搞不定的嵌套结构,Python都能处理
XML转JSON或CSVPython xmltodict + pandasxmltodict一行转字典,pandas一行转表格
Excel表格转JSON在线工具 / pd.read_excel单文件用在线工具,批量用Python
CSV导入Excel不乱码Excel Power Query导入编码可选、格式可控,彻底告别乱码和数字变形
批量50+文件格式统一Python glob循环 或 jq命令脚本写一次,以后每次跑几秒钟
服务器上临时处理,无Pythonjq 命令行一个二进制文件,JSON查询和转换都支持

最后说句实在的

数据格式转换这件事,工具选择不是重点——重点是先看一眼数据结构再动手。绝大多数翻车现场都是同一个原因:没看JSON有几层嵌套就直接往在线工具里扔,结果CSV列名对不上、数据缺胳膊少腿,自己还不知道。

养成习惯:拿到数据后先用json.dumps(obj, indent=2)[:500]打印前500个字符,看清楚结构。扁平的一层结构→在线工具秒出结果;嵌套的→直接上Python,别在在线工具上浪费时间。

还有就是编码。中文数据的转换输出统一用encoding="utf-8-sig"——多一个-sig是给文件加BOM头,Excel打开能自动识别UTF-8编码,省掉每次手动选编码的步骤。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录