数据转换器 · 5 分钟阅读
JSON 到 CSV:展平嵌套数据而不失去意义
CSV 仍然是可以在任何东西中打开的格式:电子表格、BI 工具、财务系统、审阅者的笔记本电脑。将 JSON 转换为 CSV 主要是如何处理嵌套部分的问题,因为表中每条记录一行,并且列是预先固定的,而 JSON 则可以随意嵌套。
已更新
列问题
有两条规则可以预测 JSON 到 CSV 的转换。首先,列是所有记录中所有键的并集 - 仅出现在一个对象中的键仍然会获得一列,其他地方为空。其次,每一行必须以相同的顺序发出值。出现任何错误都会产生一个可以正常打开的文件,并且与缺少键的第一行默默地错位。
展平嵌套对象
传统的技术是点符号:包含`city`和`postcode`的`address`变成`address.city`和`address.postcode`。这使得电子表格中的每个值都可见且可查询,但代价是标题较长。深度嵌套的结构可能会产生难以操作的名称,因此请扁平化您控制数据的一层,并在您探索时让工具完全扁平化。
{"id": 7, "customer": {"name": "Ada", "plan": "pro"}}
→ id,customer.name,customer.plan
7,Ada,pro
数组:扁平化严重的部分
可以使用分隔符将一组标量连接到一个单元格中,这对于标签来说很好,对于短列表来说也可以接受。对象数组(例如订单行项目)不属于单个单元格:将其连接起来,并且无法对数量求和;将其索引为 `items.0.sku`、`items.1.sku`,并且列取决于每个订单碰巧有多少商品。当遇到这种情况时,数据需要两个 CSV 文件,每个表一个,通过键链接。
如果单元格包含逗号、引号或换行符,则必须将其加引号,并且内部引号加倍。生成的输出可以处理这个问题,而手工编辑的 CSV 通常不会,这就是为什么导入在包含地址的行上间歇性失败的原因。
使文件在 Excel 中表现良好
除非另有说明,否则 Excel 会采用系统编码,因此重音字符可能会损坏。发出带有字节顺序标记的 UTF-8 可以避免这种情况;如果没有它,在 Numbers 或 Sheets 中看起来完美的同一个文件在 Excel 中也会显示 mojibake。长数字标识符(卡号、大 SKU)也值得引用,因此 Excel 不会将它们转换为科学记数法。
当 CSV 是错误输出时
如果消费者是一个程序,CSV 丢弃类型信息和嵌套没有任何好处 - JSON 行或数据库加载更好。 CSV 适用于使用电子表格的人:报告、导出、对账。有意识地选择它,而不是习惯性地选择它,就成功了一半。 YamlBox JSON 到 CSV 转换器完全在浏览器中运行,因此包含客户行的导出永远不会离开您的计算机。
JSON 至 CSV — 常见问题
将 JSON 转换为 CSV 时如何处理嵌套对象?
默认情况下,它们会用点符号展平 — `customer.name` 成为其自己的列。您可以改为对值进行分组,但扁平化的列使文件可以在电子表格中进行过滤和旋转。
为什么转换后重音字符在 Excel 中看起来不正确?
Excel 使用本地系统编码读取文件,除非字节顺序标记另有说明。使用 BOM 导出 UTF-8 可以保持名称完整;如果没有它,相同的数据在 Google Sheets 中可以正确呈现,而在 Excel 中则无法正确呈现。
我可以将对象数组转换为 CSV 吗?
列来自所有记录中键的并集,因此混合形状对象的数组仍然会生成一个有效的表,其中缺少键的地方有空白。这些对象内的数组需要拆分为第二个文件。
这篇文章中提到的工具
更多文章可供阅读
5 分钟阅读
CSV 到 JSON:从电子表格到结构化数据
在浏览器中将 CSV 转换为 JSON — 解释了标题行、分隔符、引用规则和类型处理,以及破坏解析器的电子表格导出。
6 分钟阅读
Excel 到JSON:将工作簿转变为结构化数据
在浏览器中将 Excel 从 XLSX 工作簿转换为 JSON - 标题、日期序列、公式和多张工作表说明,无需上传任何内容。
5 分钟阅读
Markdown 表:生成它们而不是计算管道数
从行或电子表格构建 GitHub 风格的 Markdown 表 - 对齐、转义管道,以及当表不适合 README 时。