JSON 转 CSV 转换器

基于 RFC 4180 规范实现 JSON 数组与 CSV 二维表格的双向无损转换。支持嵌套对象递归扁平化、自定义分隔符与纯前端本地秒级处理。

JSON 输入
就绪
629 B
CSV 输出

CSV 转换结果将在此实时呈现...

纯前端本地内存处理,零数据上传,保障数据安全支持多层嵌套 JSON 展开与点号路径对齐支持 JSON 与 CSV 双向无损转换

转换流程与参数配置

第一步

输入结构化数据

直接粘贴 JSON 数组或 CSV 文本,拖拽本地 .json / .csv 文件,或直接载入内置标准示例数据。

第二步

配置分隔符与字段参数

自由配置输出参数:切换首行表头、指定字段分隔符(逗号、分号、制表符 TSV、竖线),并按需启用多层对象递归扁平化。

第三步

检查预览与一键导出

在纯文本与交互式表格网格视图间自由切换查看,支持一键直接复制到系统剪贴板(完美贴合 Excel / 飞书 / WPS),或直接下载导出文件。

数据范式对比:树状层级 JSON 与二维表格 CSV

JSON(RFC 8259)与 CSV(RFC 4180)在现代数据工程中承担着互补的角色。JSON 面向递归、树形层次化数据建模,具备灵活的多态 Schema;而 CSV 面向二维关系型平面网格。在两种格式间无损转换的核心,在于消解任意嵌套层次与平铺列式结构之间的阻抗失配。

对比维度JSON (RFC 8259)CSV (RFC 4180)转换对齐策略
数据层级递归树形结构,支持对象与数组多层嵌套平铺二维网格矩阵(行 × 列)递归点号路径(Dot Notation)属性提取平铺
结构规范性多态弹性:同层级对象允许包含不同字段集合刚性约束:所有数据行必须保持恒定列数全局聚合所有记录的字段并集(Key Union)构建表头
类型系统显式强类型:字符串、数值、布尔值、null、对象、数组无类型纯文本:底层全部以原始字符序列持久化反向解析时执行确定性词法类型智能推断(Type Coercion)
边界界定符结构性括号({}、[])与键名双引号单字符列分隔符(,、;、\t)与换行符记录定界严格遵循 RFC 4180 规范,包含特殊字符时使用成对双引号包裹

扁平化展开算法与字段并集对齐机制

生产环境中的真实 JSON 数据很少呈现完全统一的简单扁平结构。微服务与三方 API 响应经常深度嵌套元数据、关联实体或列表。为了将其高质量映射为电子表格,转换器执行两项关键算法:

递归点号路径展开(Dot Notation)

当开启“展开嵌套对象”时,解析器深度遍历子对象并用连接符拼装键名。结构如 { "user": { "geo": { "lat": 40.7 } } } 会被转换为单一扁平表头:user.geo.lat。

// 嵌套输入对象 { "id": 101, "metrics": { "cpu": 45.2, "ram": 78.1 } } // 扁平化表头与数据行 id,metrics.cpu,metrics.ram 101,45.2,78.1

多态字段并集与稀疏行补齐(Key Union)

在多态数据集中,各个对象可能包含不同属性。转换器在初次遍历时扫描数组内全部元素,提取唯一字段并集作为表头。对于未定义某些属性的特定行,该位置自动留空,保证列数严格对齐。

// 字段不统一的异构输入 [ { "id": 1, "email": "a@test.com" }, { "id": 2, "phone": "+1234" } ] // 统一并集表头与留空对齐 id,email,phone 1,a@test.com, 2,,+1234
数组序列化策略: 嵌套于对象内部的数组将依据元素类型分别处理。标量数组(字符串、数值、布尔值)以紧凑分隔符拼接存储在单元格内(例如 "阅读, 编程");包含子对象的复杂数组则自动序列化为标准 JSON 紧凑字符串,既完整保留结构信息,又不会污染宿主表格的对齐维度。

RFC 4180 转义规范与分隔符兼容性参考

CSV 文件的工业级基准是 RFC 4180。由于逗号和换行符在 CSV 中充当列和行的语法定界符,任何本身包含这些特殊字符的数据单元必须遵循精确的转义规则,以避免表格解析紊乱。

包含分隔符加引号

若单元格内容包含当前所选分隔符(如 北京, 海淀),整个字段必须使用成对双引号包裹:"北京, 海淀"。

内部双引号双写转义

若字段本身含有双引号(如 He said "Hello"),每个内部双引号必须连续双写(""):"He said ""Hello"""。

多行换行保护

字段内部嵌套的换行符(\n 或 \r\n)在引号保护下作为单元格文本保存,防止被外部解析器误判为新数据行。

分隔符类型MIME 类型主要应用场景区域与技术考量
逗号(,)text/csv关系型数据导出、主流数据分析(Python Pandas、R)、标准通用电子表格国际默认标准;在部分欧洲区域可能与系统小数点冲突。
分号(;)text/csv欧洲区域化 Excel、德语区及跨国金融数据交换避免将使用逗号作为小数点的数值(如 12,50)截断分列。
制表符(\t)text/tab-separated-valuesTSV 格式归档、直接复制粘贴至 Excel / 飞书表格 / Google Sheets自然文本中极少包含制表符,剪贴板交互无需复杂转义。
竖线(|)text/plain数据仓库 ETL 管道、大型机数据导出、Unix 命令行管道流具备极强的防字符碰撞能力,适用于混杂逗号与句号的大文本字段。

反向解析:CSV 转 JSON 智能类型推断机制

在运行 CSV 转 JSON 模式时,解析器将纯文本表格反向重构为结构化 JavaScript 对象集合。由于 CSV 不附带任何类型元数据,解析器依据确定性词法规则自动评估单元格:

布尔值转换

精准匹配 "true" 或 "false" 的文本自动解析为原生布尔原始类型。

数值型解析

整型与 IEEE 754 浮点数格式(如 42、-12.8)自动转换为 JavaScript Number 类型。

Null 空值还原

字面量文本 "null" 自动转为显式 null,准确区分意图性空值与空字符串。

字符串保真

非数值、非布尔文本以及带显式引号的空白单元格完整保留为原生 String 字符串。

常见问题解答 (FAQ)

如何将深层嵌套的 JSON 对象与数组平铺为二维 CSV 表格?

CSV 在物理结构上是严格的二维行列网格。对于嵌套对象,转换器采用递归点号命名法(如 user.address.city)将其展开为平铺的列名。对于数组结构:若为基本类型标量数组(字符串、数值、布尔值),则在单个单元格内用分隔符拼接紧凑存储;若包含复杂子对象,则自动序列化为标准 JSON 紧凑字符串,防止破坏宿主表格的行列维度与对齐关系。

为什么导出的 CSV 用 Excel 打开时所有数据都挤在第一列?

这通常是因为 CSV 文件的字段分隔符与操作系统的区域语言设置不匹配。中文、北美及英国环境的 Excel 默认以逗号(,)作为分隔符;而在部分欧洲及拉美系统设置中,由于逗号被占用作为小数位分隔符,Excel 默认期望使用分号(;)。遇到该情况可将转换器分隔符切换为分号,或直接点击复制按钮粘贴至 Excel/WPS(本工具内置 HTML Table 剪贴板适配),即可自动精准分列。

JSON 字段内部包含逗号、双引号和换行符时,CSV 如何安全转义?

遵循 RFC 4180 国际规范:当字段内容包含分隔符、换行符(\n 或 \r\n)或双引号时,必须将整个字段使用成对双引号包裹;若文本内部存在原生双引号,则将其连续双写转义("")。这种转义机制确保了字段边界的完整性,在导入 PostgreSQL COPY、MySQL LOAD DATA 等数据库或大数据引擎时不会产生解析断行错位。

JSON 数组中不同对象的字段不一致或缺失时,转换器如何处理?

实际业务中的 API 响应常具有多态性,部分记录可能缺失可选属性。转换器在解析时会全局扫描数组中的全部对象,聚合提取所有不重复字段构成全集表头(Key Union)。对于缺失特定属性的记录,对应单元格将留空输出,从而严格保障整张表格拥有恒定对齐的列数。

反向 CSV 转 JSON 时,纯文本内容如何智能恢复原始数据类型?

CSV 文件底层全为无类型的纯文本字符串。在反向解析至 JSON 时,解析器执行确定性的词法类型推断:"true" 和 "false" 自动转换为布尔值,"null" 转为原生 null,合法的整型和浮点型数值字符串自动转为 Number 类型,普通文本和带显式引号的空字段则保留为 String 字符串,避免所有数据沦为扁平字符串。