跳至内容
Coverton 博客
在这篇文章中
表格和数据

JSON 转 CSV:选择如何展开嵌套对象

输入必须是由对象组成的数组。请决定将嵌套对象展开为独立列,还是保留为单元格中的 JSON 字符串;这两种结果的读取方式不同。

打开工具 →如何使用这个工具 ↓
JSON 转 CSV
此图展示工具的操作流程,不是上传文件的处理结果。

如何使用这个工具

  1. 选择 JSON 文件,最多可选 1 个。
  2. 检查设置(展开嵌套对象),然后开始处理。
  3. 下载 CSV 结果并检查内容与质量。

选择正确的设置

启用扁平化后,嵌套对象的属性名会用点连接,形成列标题。数组不会展开为多行;如果需要分析数组中的各个元素,请单独检查这些单元格。

支持的输入
  • JSON
输出
  • CSV
可用设置
  • 展开嵌套对象

处理前的准备

先定义一行的含义和每列的规则

转换数据前,先明确一行表示一笔订单、一个产品,还是同一产品的一项选项。记录单位不同,合并和去重的依据也不同。结果用于另一个系统导入,还是给人阅读的报表,也会影响列名和顺序。格式变化不会补出缺失值或业务规则,应拿真实导入模板核对必填项。不能只因两行名称相同就认定重复,也不能只用行数衡量内容完整。先把应该保留的记录和需要展示的字段确定下来,再选择相应处理。

读取表格时先选对标题行和工作表。说明行被当成数据时,整份文件的列名和记录数量都可能错位。同义列的拼写和前后空格不同,可能产生额外列,应在原文件中统一。CSV还需要确认编码、分隔符及引号内的换行。文字乱码时先检查解码方式,不要直接覆盖成猜测的值。对于公式列,要了解工具读取的是文件中已保存的计算结果,还是实际有其他支持;不要假定导入一定会重新计算源工作簿。

产品代码和长标识符要与计算数字区别。需要保留前导零或最后几位时,先看源文件中的字符是否还在。已经丢失的零、截短的编号不能靠转换推测恢复。日期的月日顺序、小数点和千位分组也需要原始规则。混合规则的数据应先分开,不要对整列套一个解释后默认全部正确。未能解释的记录留在报告中,逐个检查其原意;看起来像数字的值,未必可以当金额相加,含编号的字段也未必适合排序成数值顺序。

比较或连接时,选择能区分记录的实际键,并确认旧新文件或主表参照表的顺序。忽略空格与大小写可能把不同代码合并,因此要按代码规则决定。去重前比较同键记录的金额和状态,再选保留首条或末条。参照表同键重复可能阻止连接;多值展开又会复制其他列,使同一金额出现在多个结果行中。汇总前必须理解记录为什么增加,不能把每个新增行都当成新的交易。留有原始行位置的报告有助于追查。

用原始行和报告解释结果的变化

处理后应能说明行数增加或减少的原因。合并检查各文件的记录数和来源,拆分检查空值形成的组,映射则检查每列值是否去了正确位置。JSON的嵌套结构与平面表能表达的内容不同,应挑字符串、空值和数组的实际记录查看。列名一样、显示相近,并不能证明类型和结构没有变化。输入中需要的层级若无法由目标表表示,必须按目标用途判断如何使用结果,不能把生成成功当作结构完全保留的证明。

验证或去重报告提供源行号时,应回到那个位置看具体值。没有错误只针对已提交的规则,不代表所有业务条件都成立。分组总和或平均值可以选一整组与原件核算,同时确认计数选项数的是什么。计算列出现货币符号或文字,应在理解含义后清理。缺失值报告若不自动补值,就把它当检查依据,不要期待结果中已补齐。记录所用规则和人工确认的范围,能避免下次把一份有限检查报告误当成通用保证。

用于打印的表、尺寸图和代码标签,要同时核对显示值与实物尺寸。不能假定这些输出会换算单位或签发新产品代码。QR、条码生成后,将名称和编码逐项对应,并按使用尺寸打印扫描。处理编码或Base64时也要区分文字编码与字节表示:可逆的编码不是加密,输出字符串不等于压缩后的内容。XML与JSON等模型不同的格式,需检查字段与结构表达,而不是只看后缀是否改变;后续系统需要什么应先确认。

下载后在真正使用的软件中重新导入。查看CSV中的标识符是否被改为数值或日期,以及公式结果是否与源程序保存的值一致。乱码已写入原件、长数字已截断或列根本不存在时,重复执行不会补回事实。失败时先读错误指出的列和规则,区分源数据问题与设置问题。把未解决行和已确认值一起保留,便于下次追踪修改范围。对导入模板的顺序、必填和类型还应按接收系统核对,不能只以当前导出文件能打开作为验收标准。

输入和输出示例

JSON 对象序列 → 头和尾 CSV

示例描述了工作流程。结果取决于源文件和设置。

保存前检查结果

当对象具有不同的属性时,请检查 CSV 标头是否包含您需要的所有字段。将文件导入电子表格后比较空白、数组值和前导零标识符。

结果与预期不符时

单个顶级对象或裸数字数组不适合此转换。在导出数据之前解决现有点键与扁平化属性名称之间的冲突。

使用限制

  • JSON 表示对象、数组、字符串、数字、布尔值和 null,属性名使用双引号。可先格式化检查数据,再把适合表格表示的记录转为 CSV。
  • JSON 不允许注释或末尾逗号,解析数字受 JavaScript 精度限制。
  • 请检查字符编码、分隔符和列名。JavaScript 的大数可能损失精度,CSV 无法完整表示所有类型和嵌套结构。

选择下一项处理

CSV 转 JSON

第一 CSV 行提供每个数据行的 JSON 对象的键。单元格值存储为字符串,因此在将结果传递到需要数字或布尔值的系统之前检查其类型。

选择源编码并使用自动分辨率检测或选择实际分辨率 解决空或重复标题,并确保每个行都有与标题相同的列数。

打开工具 →

TSV 转 CSV

当接收系统接受 CSV 时,重新保存一个单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单单

检查源是否使用 UTF-8 或 EUC-KR 兼容编码并进行相应选择。输入字段使用制表符读取,而保存的 CSV 使用逗号作为分隔符。

打开工具 →

本指南介绍可在浏览器中使用的公共工具。请保留原文件副本,并在分享前检查处理结果。

此翻译是在软件协助下完成的。您也可以阅读英文版本。 阅读英文