跳到主要内容
LeedyBox
支持我们

JSON、CSV 与 YAML 之间的转换

JSON、CSV 和 YAML 往往可以保存相同的数据,但它们之间并非一一对应。本指南说明每种格式擅长什么、转换时哪些细节可能改变,以及如何检查结果。

每种格式擅长什么

JSON 是 Web API 和供程序读取的配置所常用的格式。它的类型少而清晰:对象、数组、字符串、数字、布尔值和 null。严格的语法让软件易于解析,但它不支持注释。

CSV 是一张表:每行一条记录,每列一个值。电子表格、数据库和报表工具都能轻松导入它,对于大型扁平数据集也很紧凑。它没有描述数据类型或嵌套结构的标准方式。

YAML 是为人的书写和阅读而设计的。它允许注释,用缩进代替括号,并能描述与 JSON 相同的结构,因此在配置文件中很受欢迎。但灵活的语法也意味着,缩进或引号上的小错误就可能改变含义。

特性 JSON CSV YAML
嵌套对象和数组 支持 不支持(扁平表格) 支持
数据类型 字符串、数字、布尔值、null 仅文本 根据值推断
注释 不支持 不支持 支持
典型用途 API、应用数据 电子表格、导入 配置文件

CSV 会把嵌套结构展平

CSV 文件只有行和列,因此嵌套数据必须改变形态。常见的做法有两种。第一种把结构展平为 address.city 和 address.zip 这样的列名。第二种把嵌套部分作为 JSON 字符串保存在单个单元格中。LeedyBox 数据转换同时提供这两种选项。

两种做法各有取舍。展平后的列在电子表格中易于阅读,但长度不同的数组会产生大量稀疏的列。单元格中的 JSON 字符串保留了结构,却更难手工编辑。如果之后再转换回 JSON,请检查结构是否与最初一致。

在 CSV 中类型会变成文本

CSV 把每个值都存为文本。数字 42、字符串 "42" 和布尔值 true 在单元格中看起来都一样。重新读取 CSV 文件时,程序必须猜测或被告知哪些列是数字或日期。LeedyBox 转换工具将 CSV 的值按文本读取,因此除非您修改,否则来自 CSV 文件的数字在 JSON 中会显示为字符串。

电子表格应用还会自行猜测:它们可能会去掉邮政编码或电话号码开头的零,把长数字变成科学计数法,或者把值解释为日期。以 =、+、- 或 @ 开头的单元格可能被当作公式;转换工具为 CSV 输出提供了可选的 Excel 公式保护设置。

注释与 YAML 的类型推断

JSON 没有注释,因此把 YAML 转换为 JSON 会丢弃注释。再转换回来也不会恢复。如果注释很重要,请保留原始的 YAML 文件。

YAML 会根据未加引号的值猜测类型。按照部分解析器仍在使用的旧版 YAML 1.1 规则,no、yes、on 和 off 等单词会变成布尔值,因此像 NO 这样的国家代码可能变成 false。2026-10-02 这样的值可能变成日期对象,1e3 或 010 可能被读作数字。LeedyBox 转换工具使用 YAML 1.2 核心模式读取 YAML,会将 no 和日期保留为文本,但读取您文件的其他工具可能有不同的行为。给必须保持为文本的值加上引号是最稳妥的习惯。

JavaScript 中的大数字

JavaScript 以 64 位浮点数存储数字。大于 9,007,199,254,740,991(253 − 1)的整数无法全部精确表示,因此像 12345678901234567891 这样的大 ID 在解析时可能会被悄悄舍入。这会影响所有基于浏览器的转换工具,包括本工具;本工具检测到此类数字时会显示提示。数据库 ID 和其他较长的标识符以字符串存储更安全。

检查结果

生成了有效输出的转换未必是正确的。使用结果之前:

  • 将行数或项目数与源数据进行比较。
  • 抽查几条记录,包括含有空值、特殊字符、换行或嵌套数据的记录。
  • 检查在目标系统中应为数字、布尔值或日期的列。
  • 查找可能已被舍入的长数字。
  • 先用数据副本,在将要读取输出的程序中验证输出。

文本比较工具可以帮助您比较原始文件和往返转换后的文件。

常见问题

JSON 转换为 CSV 后再转回来,能保持不变吗?

只有简单的扁平数据才可以,而且即便如此,数字和布尔值通常也会变回文本。嵌套数据和类型取决于所用的选项,因此请将结果与原始数据进行比较。

为什么我的 YAML 值变成了 true 或 false?

某些 YAML 解析器会把未加引号的 yes、no、on、off 等单词当作布尔值。给值加上引号即可将其保留为文本。

转换时我的数据会被上传吗?

LeedyBox 数据转换在您的浏览器中运行,因此您粘贴的数据在您的设备上处理。