JSON数据怎么弄成表?3种实用方法轻松搞定
在日常数据处理中,我们经常遇到需要将JSON数据转换成表格(如Excel、CSV或数据库表)的场景,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,结构灵活(键值对、数组嵌套),但表格结构清晰、便于分析,转换需求十分常见,本文将详细介绍3种实用方法,从手动操作到自动化工具,帮你轻松搞定JSON转表格。
理解JSON数据结构:转表前必看的“底层逻辑”
在转换前,先快速扫一眼JSON的基本结构,避免“盲目操作”,JSON数据通常有两种核心形式:
-
对象(Object):用 表示,由“键值对”组成,类似Python的字典或Java的Map。
示例:{ "name": "张三", "age": 25, "city": "北京" }
-
数组(Array):用
[]
表示,由有序值组成,类似Python的列表或Java的数组,数组中的元素通常是对象(最常见转表场景),也可能是简单类型(如字符串、数字)。
示例(对象数组,转表“主力军”):[ {"name": "张三", "age": 25, "city": "北京"}, {"name": "李四", "age": 30, "city": "上海"}, {"name": "王五", "age": 28, "city": "广州"} ]
关键结论:
- 如果JSON是单个对象,转表后通常是“1行多列”(键为列名,值为单元格);
- 如果JSON是对象数组,转表后是“多行多列”(每个对象一行,键为列名);
- 如果JSON嵌套复杂(如对象里又有数组),需先“扁平化”处理(后文工具会演示)。
方法1:手动操作——小数据量“秒级转换”
如果JSON数据量小(比如少于10行),或结构简单,手动转表最快,无需工具。
操作步骤:
- 确定列名:从JSON的“键”中提取列名,例如上面的对象数组,列名是
name
、age
、city
。 - 填充数据:按顺序将每个对象的“值”填入对应列。
- 第一个对象:
张三
填name
列,25
填age
列,北京
填city
列; - 第二个对象:
李四
、30
、上海
,依此类推。
- 第一个对象:
- 整理成表格:用Excel、WPS或Markdown表格直接录入。
优点:
- 无需工具,打开Excel就能操作;
- 适合临时处理、数据量极小的场景。
缺点:
- 数据量大时(比如100+行),手动填容易出错且耗时;
- 无法处理嵌套复杂的JSON(如对象里嵌套数组)。
方法2:编程自动化——Python“万能钥匙”,复杂数据也不怕
当JSON数据量大、结构复杂(如嵌套多层),或需要批量转换时,编程是最可靠的方式,Python凭借简单易用的库(如pandas
、json
),成为首选。
场景1:简单对象数组转Excel(最常见)
假设我们有以下JSON文件users.json
(对象数组):
[ {"id": 1, "name": "张三", "contact": {"email": "zhangsan@email.com", "phone": "13800138000"}}, {"id": 2, "name": "李四", "contact": {"email": "lisi@email.com", "phone": "13900139000"}} ]
目标:转成Excel表格,包含id
、name
、email
、phone
列(注意嵌套的contact
对象要“展开”)。
Python代码(3步搞定):
import pandas as pd import json # 1. 读取JSON文件(JSON数据可以直接用pd.read_json解析) with open('users.json', 'r', encoding='utf-8') as f: data = json.load(f) # 解析为Python列表 # 2. 转为DataFrame(pandas的核心数据结构,类似Excel表格) df = pd.json_normalize(data) # json_normalize会自动“扁平化”嵌套对象 # 如果JSON是单个对象(非数组),用:df = pd.DataFrame([data]) # 3. 保存为Excel(也可保存为CSV:df.to_csv('users.csv', index=False)) df.to_excel('users.xlsx', index=False) # index=False表示不保存行索引(0,1,2...) print("转换完成!表格已保存为users.xlsx")
效果:生成的Excel表格如下,嵌套的contact
对象自动拆分成email
、phone
两列:
id | name | contact.email | contact.phone |
---|---|---|---|
1 | 张三 | zhangsan@email.com | 13800138000 |
2 | 李四 | lisi@email.com | 13900139000 |
场景2:JSON数组含“数组嵌套”,需自定义处理
如果JSON里有数组嵌套(如一个用户有多个“爱好”),直接用json_normalize
可能会丢失数据。
[ {"id": 1, "name": "张三", "hobbies": ["篮球", "阅读"]}, {"id": 2, "name": "李四", "hobbies": ["游泳", "游戏"]} ]
目标:转成表格,hobbies
列保留所有爱好(不拆分成多列)。
Python代码(微调):
import pandas as pd import json with open('users_hobbies.json', 'r', encoding='utf-8') as f: data = json.load(f) # 直接转为DataFrame(数组类型的列会保留为列表) df = pd.DataFrame(data) # 保存为Excel df.to_excel('users_hobbies.xlsx', index=False) print("转换完成!")
效果:hobbies
列以列表形式存储(如["篮球", "阅读"]
),适合后续用Python处理;若需拆分成多列(每行一个爱好),可用explode
方法(df.explode('hobbies')
)。
优点:
- 自动化处理,支持大数据量(百万级数据也没问题);
- 可灵活处理嵌套、数组等复杂结构;
- 输出格式多样(Excel、CSV、数据库表等)。
缺点:
- 需要基础Python知识(但代码简单,复制改路径就能用);
- 需安装环境(Python+pandas库:
pip install pandas openpyxl
)。
方法3:在线工具——无代码“一键转换”,小白友好
如果你不想写代码,又觉得手动操作麻烦,在线工具是“救星”,只需上传JSON文件,选择输出格式,即可下载表格。
推荐工具:
- JSON to Excel Online(https://json-to-excel.com/):界面简洁,支持拖拽上传,直接下载Excel。
- ConvertJSON(https://www.convertjson.com/json-to-excel.htm):功能丰富,可预览表格,支持CSV、Excel多种输出。
- Excel自带的“从JSON”功能(Excel 2016+):
- 点击“数据”选项卡 → “获取数据” → “从文件” → “从JSON”;
- 选择JSON文件 → 加载后通过“Power Query编辑器”调整格式 → 关闭并加载到表格。
操作步骤(以“JSON to Excel Online”为例):
- 打开网站,点击“Upload JSON File”上传JSON文件;
- 网站自动解析并预览表格,可调整列名或顺序(部分工具支持);
- 点击“Download Excel”下载表格文件。
优点:
- 无需安装,浏览器直接用;
- 操作简单,适合零基础用户;
- 支持快速预览,避免转换错误。
缺点:
- 数据敏感时存在隐私风险(不建议上传含个人信息的JSON);
- 复杂嵌套JSON可能解析失败(需手动调整);
- 大数据量(如50MB+)可能上传超时。
3种方法怎么选?
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
手动操作 | 数据量小(<10行)、结构简单 | 无需工具,快速 |
还没有评论,来说两句吧...