开发者工具 · JSON / 数据格式

JSON 转 CSV

数组→表格/嵌套展平

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 130 次使用
JSON⇒CSV 编辑任一侧实时互转
JSON JavaScript Object Notation
CSV Comma-Separated Values
就绪 · 左侧填 JSON 或右侧填 CSV,另一侧自动互转,全程本地处理
第一节

关于本工具

About

后端接口返回的 JSON 数组,在浏览器里一眼看不清字段对应关系。这个工具把数组结构拆成表格,嵌套对象和数组自动展平为多列,输出 CSV 可直接用 Excel 或 Pandas 打开。纯浏览器处理,原始数据不上传服务器,适合接口调试、数据迁移时快速预览结构。

使用场景

壹

电商订单拆明细

运营小陈从后台导出一份订单 JSON,里面每个订单的「商品列表」是一个嵌套数组,包含 SKU、数量、单价。她需要把这份数据交给财务做对账,但财务只认扁平的 CSV 表格。用本工具把嵌套的商品数组展平,每个 SKU 变成独立行,同时保留订单号、收货地址等外层字段,财务直接导入 Excel 即可逐行核对,省去手工拆解 300 多笔订单的重复劳动。

贰

API 接口联调排错

后端工程师老赵在调试用户列表接口,返回的 JSON 里每个用户对象带有一个「地址」子对象(省、市、区、街道)。他需要把 50 条测试数据粘贴到 Excel 里,和预期结果逐字段比对。本工具将子对象字段自动展开为「地址_省」「地址_市」等独立列,老赵直接复制 CSV 到 Excel 后用条件格式标红不一致的单元格,5 分钟定位到 3 处字段映射错误。

叁

市场调研数据清洗

市场专员小刘从问卷平台导出一份多选题结果,JSON 结构是「题号: 选项数组」。她需要把每个受访者的所有选项拆成一行一条记录,才能用数据透视表统计各选项占比。用本工具把选项数组展平,每个选项独立成行,同时保留受访者 ID 和填答时间。原本手动拆 200 份问卷要 2 小时,现在 1 分钟生成 CSV,直接拖进透视表出报告。

肆

日志审计逐行分析

运维工程师小周排查一次线上故障,从日志系统捞到 2000 条请求记录 JSON,每条包含「请求头」「响应体」「耗时」三个嵌套对象。他需要把耗时超过 3 秒的慢请求筛选出来,分析是哪个接口的哪个参数导致。本工具将嵌套对象展平为「请求头_User-Agent」「响应体_status」等列,小周用 CSV 排序功能直接定位到耗时最高的 20 条记录,发现是某个图片接口未加缓存导致。

伍

配置迁移批量录入

系统管理员老王要把旧服务器的 150 条 nginx 站点配置(JSON 格式)迁移到新管理平台,新平台只接受 CSV 导入。每条配置包含 server_name、listen 端口、ssl 证书路径等字段,其中「location 规则」是一个嵌套数组。用本工具把 location 数组展平,每个 location 规则独立成行,同时保留父级 server_name。老王一次性导入成功,避免逐条手工录入可能导致的端口冲突或路径拼写错误。

第二节

使用指南

Getting Started

使用步骤

  1. 1在左侧输入框粘贴 JSON 数组(如 [{ "name": "张三", "age": 30 }]),右侧预览区即刻按原字段生成表头与首行数据
  2. 2若 JSON 含嵌套对象(如 address.city),勾选「展平嵌套」后预览区自动将嵌套字段展开为独立列(address.city)
  3. 3点击「转换」按钮,下方结果区输出 CSV 纯文本,表头与数据行以逗号分隔,嵌套字段名以点号连接
  4. 4点击「下载 CSV」按钮,浏览器自动下载 .csv 文件,可用 Excel 或文本编辑器打开核对

输入输出示例

输入输出说明
[{"name":"张三","age":30,"city":"北京"},{"name":"李四","age":25,"city":"上海"}]name,age,city 张三,30,北京 李四,25,上海常规:标准对象数组,验证基本展平与 CSV 表头自动生成
[{"id":1,"info":{"score":95,"level":"A"}},{"id":2,"info":{"score":88,"level":"B"}}]id,info.score,info.level 1,95,A 2,88,B常规:嵌套对象自动展平,点号分隔层级,验证展平逻辑
[]边界:空数组,工具应返回空字符串(无表头无数据),验证空输入处理
[{"a":1},{"b":2}]a,b 1, ,2边界:数组内对象键不一致,缺失字段以空值填充,验证对齐逻辑
[{"name":"测试","tags":["A","B"]},{"name":"样例","tags":["C"]}]name,tags.0,tags.1 测试,A,B 样例,C,易错:数组字段展平为多列(tags.0 / tags.1),长度不足留空,验证数组展开规则
[{"value":"包含,逗号"},{"value":"包含\"引号"}]value "包含,逗号" "包含""引号"易错:字段值含逗号或双引号时,CSV 自动加双引号并转义内部引号,验证转义机制

常见错误对照

1.JSON 数组外层未包裹方括号,解析失败

✗ 错误{"name":"Alice","age":30} {"name":"Bob","age":25}
✓ 修复[{"name":"Alice","age":30},{"name":"Bob","age":25}]

工具期望输入为 JSON 数组(以 [ 开头),每行一个独立对象不是合法 JSON,解析器会直接报错。

2.对象键值对末尾残留逗号,违反 JSON 规范

✗ 错误[{"name":"Alice","age":30,}]
✓ 修复[{"name":"Alice","age":30}]

JSON 标准(RFC 7159)禁止对象或数组末尾有多余逗号,多数解析器会抛出 SyntaxError。

3.键名使用单引号而非双引号,非标准 JSON

✗ 错误[{'name':'Alice','age':30}]
✓ 修复[{"name":"Alice","age":30}]

JSON 要求键名必须用双引号包裹,单引号仅在 JavaScript 对象字面量中合法,JSON 解析器会拒绝。

4.字符串值内未转义双引号,破坏结构

✗ 错误[{"name":"Alice "Smith"","age":30}]
✓ 修复[{"name":"Alice \"Smith\"","age":30}]

字符串值中的双引号必须用反斜杠转义,否则解析器会误认为键值对结束,导致后续内容解析失败。

5.嵌套对象未展平,CSV 输出多级表头混乱

✗ 错误[{"user":{"name":"Alice","age":30}}]
✓ 修复[{"user.name":"Alice","user.age":30}]

工具默认展平嵌套对象为点号分隔键名,若不手动展平,CSV 表头会变成 user 列,值为 [object Object]。

6.数组元素类型不一致,CSV 列数不匹配

✗ 错误[{"name":"Alice","age":30},{"name":"Bob"}]
✓ 修复[{"name":"Alice","age":30},{"name":"Bob","age":25}]

CSV 是严格表格结构,若某对象缺少其他对象拥有的键,该列会留空,导致数据对齐错位。

7.值包含换行符未转义,CSV 行数异常

✗ 错误[{"name":"Alice\nSmith","age":30}]
✓ 修复[{"name":"Alice Smith","age":30}]

CSV 中换行符通常作为行分隔符,若 JSON 字符串含换行符,输出 CSV 会多出一行,破坏表格结构。

8.数值被写成字符串,CSV 中失去数字类型

✗ 错误[{"name":"Alice","age":"30"}]
✓ 修复[{"name":"Alice","age":30}]

JSON 中数字不应加引号,否则 CSV 导出后 age 列会被视为文本,无法参与排序或计算。

第三节

工作原理

How It Works

核心公式

CSV = flatten(obj, prefix='') → 键路径:值

变量说明

  • objJSON 对象或数组元素
  • prefix父级键路径前缀,初始为空
  • 键路径点号连接的多级键名,如 'a.b.c'

示例

输入 JSON 数组 [{"user":{"name":"张三","age":30},"scores":[95,88]}]。展平后:第一行键路径为 user.name、user.age、scores.0、scores.1,对应值 "张三"、30、95、88。第二行同理。最终 CSV 表头为 user.name,user.age,scores.0,scores.1。

JSON 数组[{...}, {...}]解析 & 校验数组结构检查展平嵌套对象/数组展开CSV 表格逗号分隔全程在浏览器内完成数据不上传服务器,隐私安全
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问我有个嵌套了好几层的 JSON,能一次性展平转成 CSV 吗?+
答

可以。本工具默认递归展平嵌套结构,遇到对象会按 JSON 路径生成列名(如 user.address.city),遇到数组会拆成多行并复制外层字段。如果某层字段值本身是深层对象,展平后列数会变多;如果 JSON 层级太深(超过 10 层),建议先拆分成多个小文件分批转换,避免 CSV 列数过多导致 Excel 打开卡顿。

问JSON 里有些字段值是空数组,转换后那行数据全没了怎么回事?+
答

空数组 [] 在展平时会被当作零行处理,所以该外层记录会直接跳过——这是很多在线工具的默认行为。如果你希望空数组对应的行保持存在(只留其他字段),可以在转换前把空数组手动替换成 null 或空对象 {};或者先在本工具预览区确认行数变化,确认后再导出。

问为什么我转出来的 CSV 用 Excel 打开中文全乱码?+
答

CSV 文件本身不保存编码信息,Excel 默认用 GBK 打开,而本工具输出 UTF-8。解决方案:导出后用记事本另存为 UTF-8 with BOM(带 BOM 的 UTF-8),再打开 Excel 就能正常显示中文。或者直接拖入 Excel 后用「数据→从文本/CSV 导入」,在导入向导里选 UTF-8 编码。

问JSON 里有个字段值是字符串 "null",它和真正的 null 怎么区分?+
答

本工具严格区分:JSON 中的 null(无引号)在 CSV 里输出空单元格;字符串 "null"(有引号)则保留原文。如果你希望统一处理,建议在粘贴前用文本编辑器做一次全局替换。另外注意:某些 JSON 生成工具会把缺失字段输出为 "null" 字符串,这会导致 CSV 里出现文字 'null',而不是空。

问我 JSON 数组里每个对象字段不完全一样,有的多几个键,转换后那些行会错位吗?+
答

不会错位。本工具会扫描整个 JSON 数组,收集所有出现过的键名作为 CSV 表头,缺失的字段留空。例如第一条有字段 a、b,第二条有 a、c,则最终 CSV 列顺序为 a、b、c,第二条的 b 单元格为空。如果键名数量差异很大(比如几十个字段只有几条记录有),建议先过滤掉多余的字段再转换。

问这个工具是纯网页端还是会把 JSON 上传到服务器?+
答

纯浏览器端处理。本工具实现方式是 FE(前端),你的 JSON 数据不会离开当前页面——粘贴后直接在浏览器内存里解析、展平、生成 CSV 并下载。断网也能用,没有文件大小上限(但浏览器内存有限,超过 50MB 的 JSON 建议分批处理)。隐私敏感数据放心使用。

问JSON 里有个数组套数组,比如 [[1,2],[3,4]],转出来是什么样?+
答

本工具会将最内层数组展平为单独的列。例如 [[1,2],[3,4]] 会变成两行:第一行列名为 0、1,值为 1、2;第二行同样列名,值为 3、4。如果内层数组长度不一致(比如 [1,2] 和 [3]),短的会留空。如果你希望保持数组原样输出成字符串,建议先在外层用 JSON.stringify 包裹该字段。

问转出来的 CSV 行数比 JSON 里的对象数多很多,是不是出 bug 了?+
答

大概率不是 bug,而是 JSON 里存在嵌套数组。例如一个对象包含一个长度为 5 的数组字段,展平后该对象会变成 5 行(数组每行一条,外层字段复制)。这是展平的正常行为。你可以在预览区看到行数变化提示,如果不想展开某个数组,可以在粘贴前手动把该字段值改成空对象或字符串。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭