跳转到主要内容
CuteJSON
↑↓ 导航 Enter 选择 Esc 关闭

如何将JSON转换为CSV而不丢失数据

发布 1 分钟阅读 作者 Akash Kinkar Pandey

CSV 没有一个大家都遵循的规范,这就是为什么许多转换器在边界情况上 意见不一。本工具遵循 RFC 4180,并声明它偏离该规范的唯一之处,而不是 默默选择规则。

使用 JSON 到 CSV 转换器

选择方向,设置分隔符(逗号、分号或制表符),以及第一行是否包含列名, 然后点击转换。转换为 CSV 需要一个对象数组,这是唯一真正是表格的 JSON 形式;单个对象也被接受,视为一行的表格。

转换

[{"name":"Doe, Jane","age":30,"note":null},{"name":"Smith","age":25,"note":"line1\nline2"}]

产生:

name,age,note
"Doe, Jane",30,
Smith,25,"line1
line2"

字段只有在确实需要时才加引号:Doe, Jane 中的逗号强制加引号, 第二个 note 中嵌入的换行符强制加引号,而像 Smith 这样的简单值 则不加引号。

嵌套值和 null 会发生什么

嵌套的对象或数组根本没有 CSV 形式,它是一个单一值的网格,因此 作为自身的 JSON 文本写入单元格,而不是被丢弃或展开到虚构的列中。 null 变成一个空字段,这意味着 null 和空字符串一旦到达 CSV 就无法 区分。两种选择都在页面上声明,而不是留待以后发现。

为什么每个字段都变回字符串

从 CSV 转换时,每个值都刻意保持为字符串。CSV 文件完全不记录类型, 因此猜测类型就是为什么一个 01234 的邮政编码会丢失前导零变成 1234,以及一个长标识符会在某个东西试图将其读作数字时被四舍五入。 之后将已知列转换为数字是一行代码;被默默四舍五入的标识符是不可 恢复的。回读上面的例子,age 作为字符串 "30" 返回,而不是数字 30,空的 note 字段作为 "" 返回,而不是 null。

交换方向

交换将当前输出移入输入并翻转方向,因此你可以立即检查文档是否按 预期通过 CSV 往返,无需重新输入任何内容。在字段内有逗号或 ID 中有 前导零的数据上尝试,因为这些正是大多数转换器做错的情况。

返回所有文章