Command Palette

Search for a command to run...

JSON 到 CSV:将 API 响应转换为人们可以打开的电子表格

JSON 到 CSV:将 API 响应转换为人们可以打开的电子表格

T
Toolz Team
|Aug 23, 2026|13 最小读数

数据工具 合集的一部分

SaaS任何产品上我一半的工作都是将数据从系统中获取出来,并交到一个不写代码的人手中,一位创始人想要在电子表格中注册月份's,一位支持线索想要在Excel中对票证进行分类,一位会计师想要订单作为 .csv these can pivot。data lived as JSON,因为那是 API 返回的,而且每次任务都是一样的:把这个对象数组变成列,行一个人类可以打开的。我厌倦了为它编写一次性脚本,这正是 Toolz 的原因 JSON 到 CSV 转换器 存在。本指南是我对这种转变的看法,包括绊倒人们的部分。

TL;博士: JSON到CSV转换器,取一个对象数组,写成逗号分隔的行,每个属性一列,所以电子表格可以打开它,硬部分是不同字段的记录,嵌套对象,以及包含逗号的值,一个好的转换器从所有键的并集构建头,可以将嵌套对象平坦为点符号列,并且每个RFC 4180转义字段。Toolz工具做所有三个客户端,并让你选择分隔符和CRLF行结尾,这样文件在Excel中可以干净地打开。

Laravel 和 React 基础上构建的,所以 JSON 是我的原生格式,CSV 是我导出的通用语言,有趣的工程并不是每个对象都具有相同三个键的快乐路径;而是生产数据的混乱现实,那是大多数转换器悄悄做错事的地方。

什么是 JSON 到 CSV 转换器?

JSON到CSV转换器读取一个JSON的对象数组,并生成一个表:属性名称成为头行,每个对象在其下方变成一个数据行,粘贴来自API端点、数据库查询或导出的文档的响应,得到一个可以在Excel、Google Sheets或Numbers中直接打开的文件,它是格式机器交换和人们实际工作的格式之间的桥梁。

理想的输入是一组共享相同键的平面对象数组,因为这完美地映射到矩形表上。真实数据很少那么整洁。对象缺少一个字段,值嵌套两个级别深,并且某些条目是数组而不是标量。专用转换器的整个值是它对每个情况都有一个定义的、合理的答案,而不是抛出错误或丢弃数据。如果您的 JSON 被最小化或您只是想首先检查它,请运行它通过 JSON 格式化程序 转换前进行漂亮打印并验证。

它如何处理不同字段的对象?

这是打破天真的转换器的第一件事,值得理解,因为生产 JSON 几乎从来没有统一的对象。假设您的数组有一个对象 idname、和 email并且下一个与 idname、和 phoneCSV应该有哪些列?

正确答案是所有对象中每个键的并集,按照每个键首次出现的顺序保留。因此标题变为 idnameemailphone并且任何缺少其中一个键的对象都只是在该列中获取一个空单元格。什么都没有掉落,表保持矩形。一个只读取第一个对象的键的懒惰转换器将默默地丢失 phone 完全列,随身携带每个电话号码。toolz 转换器扫描所有行以构建标头,因此不均匀的记录仍然排列成一个干净、完整的表。这一行为是您可以信任的导出与悄悄省略数据的导出之间的区别。直到为时已晚,没有人注意到。

嵌套对象和数组怎么样?

JSON是一棵树;CSV是一格,一个平成另一个是第二位转换器发散,正确的选择取决于你打算如何处理文件。

对于嵌套对象,您有两个合理的选项,并且该工具支持两者。随着压平,嵌套对象将扩展为点符号列,因此 { "address": { "city": "Paris", "zip": "75001" } } 成为一个 address.city 列和一个 address.zip column。that是你想要的当嵌套字段是一个人会读取和排序的真实数据。随着flattening off,整个嵌套对象在单个单元格内写成紧凑的json字符串,当结构不透明时,你只需要逐字保存它就更好了。

Arrays 得到自己的选择,因为没有单一的正确方法将列表挤入一个单元格中,你可以将数组存储为 JSON,保留 ["a","b"] 完好无损,因此可以完美往返,或者您可以使用分隔符连接元素以获得更易于人类阅读的内容 a; b。当文件会被程序读回时我使用JSON,当一个人是受众时使用join格式,可读性获胜,下表总结了决策。

输入形状 压平 扁平化
{"user":{"name":"Ada"}} user.name = Ada user = {"name":"Ada"}
{"tags":["x","y"]} (阵列为JSON) tags = ["x","y"] tags = ["x","y"]
{"tags":["x","y"]} (阵列加入) tags = x; y tags = x; y
对象缺少密钥 该列中的空单元格 该列中的空单元格

为什么逗号和引号需要转义?

CSV是这样一条规则,忽略了,产生一个看起来不错的文件,直到有人打开它,列都错了,CSV用逗号分隔字段,那么当一个值包含逗号时会发生什么,或者是双引号,或者是多行注释的换行?

RFC 4180中,CSV最接近标准的东西,准确地回答了这一点:任何包含分隔符、双引号或换行的字段都必须用双引号包裹,并且该字段内的任何双引号都必须加倍,所以值 Baker, Smith & Co. 写为 "Baker, Smith & Co."、和 She said "hi" 变成 "She said ""hi"""。Toolz转换器将这些规则自动应用于每个单元格,这就是为什么地址,带有数千个分隔符的价格或自由文本注释在行程中作为单个完整字段保留下来,而不是粉碎成额外的列。

如何让文件在 Excel 中干净地打开?

CSV你会认为是CSV,但Windows上的Excel对于一件能让人们望而却步的事情很挑剔:行结尾,正确地理解这个是完美打开的文件和行出现合并或拆分的文件之间的区别。

windows 上的 Excel 期望每一行都以回车符加上换行符结束,CRLF 对。如果您递给它一个带有 Unix 风格 LF 行结尾的文件,它可能会误读行中断的位置,特别是当引用的字段包含自己的换行符时,它可以让您选择 LF 或 CRLF,因此当受众是 Windows 上的 Excel 和 LF 上的大多数其他工具和 Google Sheets 时,选择 CRLF,这对于其中任何一个都很满意。您还可以选择分隔符:逗号是默认值,但在逗号是小数分隔符的欧洲区域中,分号很常见,当您的数据本身充满逗号时,选项卡或管道很方便。将分隔符和行结尾与目的地匹配是五秒钟的选择,稍后可以节省支持票。

在线转换敏感 JSON 是否安全?

是的,因为没有一个离开你的浏览器。转换的每个部分,从解析 JSON 到转义每个字段到加入行,都在自己的机器上运行 JavaScript。没有上传,也没有服务器,因此没有传输、记录或存储任何内容。打开网络选项卡并单击"转换":您将看到没有请求退出,并且一旦页面加载该工具,该工具就会在互联网断开的情况下工作。

JSON 来说,这并不是一个小细节,具体来说,因为 JSON 是 API 响应和内部系统所说的,你正在转换的数组可能保存用户记录、订购数据、访问令牌或你的后端返回的任何其他东西。将你的有效负载运送到远程服务器的转换器将私有响应变成其他人's 日志行。在客户端完成工作意味着数据恰好停留在它开始的位置。它是 toolz。dev 上每个工具的默认值,如果你想要更全面的案例来解释为什么那个架构很重要,我把它放在了 在线工具的数据隐私指南

这在真正的管道中适合在哪里?

转换器本身就是一步,但它通常是较长流量的最后一跳,它自然地与其他工具配对。我一周中最常见的往返是:从 API 导出 JSON、编辑或过滤它、转换为 CSV,然后将其交给生活在电子表格中的人。当他们将其与更改一起发送回时,我将另一个方向与 CSV 到 JSON 转换器的,它解析了每个RFC 4180的文件并推断类型,所以我再次得到干净的对象,这两个工具是彼此故意的镜像,这就是为什么它们交叉链接。

在转换之前,我经常想将数据视为一个网格来理智地检查它,并且 CSV 查看器 将 CSV 渲染为可排序表,以便我可以确认导出看起来正确。当目的地根本不是电子表格而是另一个说 XML 的系统时, XML 到 JSON 转换器 and its corporats cover that leg。因为这些每一个都在本地运行,所以你可以在同一个私有文件上链,而不需要一次上传。如果你正在为这种数据纠缠组一套首选工具,我的 web开发人员工具包指南 涵盖了我对组装一个的看法。

常见问题

如何将json转换为csv? 打开 JSON 到 CSV 转换器、将一个JSON的对象数组粘贴到输入框中,点击转换,对象键变成头行,每个对象变成数据行,那么你可以复制CSV或者下载为a .csv excel 或 Google 表格中打开的文件。所有处理都发生在您的浏览器中,因此没有上传任何内容。

转换器期望什么 JSON 结构? 1个对象数组是理想的,其中每个对象变成1行,单个对象也被接受,变成1行文件,不是对象的值放在a下 value 列所以没有丢失任何东西,并且当这种情况发生时,该工具会警告您。

它如何处理不同字段的对象? 头(header)是在所有对象中找到的每个密钥的并集,按每个密钥首次出现的顺序保存。缺少其中一个密钥的对象只是在该列中得到一个空单元格,因此不均匀的记录仍然会产生一个干净、完整的表,没有丢弃数据。

如何处理嵌套对象和数组? 随着平坦化,嵌套对象会扩展为点符号列,例如 address.city;关闭后,对象在一个单元格中写成一个 JSON 字符串,数组可以存储为 JSON 来精确保存它们,或者用分隔符连接以获得更易读的列。您选择每次转换。

为什么我应该为 Excel 使用 CRLF 行结尾? Windows 上的 Microsoft Excel 期望在每一行末尾进行回车加送行。选择 CRLF 可以避免在打开文件时行被合并或读错。对于大多数其他工具和 Google Sheets,LF 工作正常。

值中的逗号和引号是否正确转义? 是。RFC 4180之后,任何包含分隔符、双引号或换行的字段都用双引号包裹,内部引号也加倍。这使得地址、描述和其他自由文本保持为单个有效字段,而不是跨列拆分。

转换敏感 JSON 是否安全? 是的。转换完全在浏览器中的 JavaScript 中运行,没有网络请求携带您的数据,没有记录或存储任何内容,并且一旦加载,它就会离线工作。包含 API 密钥、用户记录或内部标识符的 JSON 永远不会离开您的机器。

我可以将 CSV 转换回 JSON 吗? 是的。 CSV 到 JSON 转换器 reverses the process, 将逗号分隔的文件解析回带有类型推断的对象的 JSON 数组, 往返可让您在电子表格和 API 之间移动数据, 而无需手工重写。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!