CSV 转 YAML 转换器

YAML 正是现代配置文件的构成方式:Kubernetes 清单文件、GitHub Actions 工作流、Docker Compose、Ansible playbook 以及 Rails fixtures。该转换器读取 CSV 并生成一段 YAML 序列,其中每一行都成为以表头行为键的映射。输出采用双空格缩进和第 4 级内联阈值,与大多数编辑器和代码检查工具的风格一致。

CSV如何成为 YAML

  1. 1

    粘贴 CSV 文件

    样本已预先加载,以便您查看默认输出形状;可将其替换为您的数据。

  2. 2

    选择分隔符

    默认使用逗号分隔。如需使用制表符分隔的输入内容,请输入 `\t`;或使用文件中使用的其他任意单个字符。

  3. 3

    表头成为键

    第 1 行被视为表头行。数据行按照与源列相同的顺序,成为这些键下的映射。

  4. 4

    YAML 安全转储

    输出由 Symfony 的 YAML 组件生成;当某个值可能与布尔值、数字或日期产生歧义时,组件会为其加上引号。

粘贴输出内容前需了解的 YAML 特性

YAML 表面上以宽容著称,实则暗藏诸多陷阱。虽然数据转储工具能应对其中大部分问题,但您的数据仍需经受往返传输过程中的考验。

挪威问题及其相关议题

YAML 1.1 会把裸写的 noyesonofftruefalseyn(及其大写形式)视为布尔值。这意味着,一列国家代码中代表挪威的 NO 可能会悄然变成 false

源单元格 输出结果(未加引号) 通常想要表达的含义
NO false 国家挪威
ON true 安大略省
123 123 数字或 ID
0100 64(八进制!) 以零开头的代码

转储工具会自动为有风险的值加上引号,但若输出结果中出现错误的类型,请在下游改用 YAML 1.2 解析器,或明确地为你在意的值加上引号。

格式选择

  • 双空格缩进。 多数编辑器的标准做法;yamllint 等代码检查工具也默认采用此格式。
  • 内联阈值 4。 深度嵌套的结构在第 4 级以下会输出为一行,超过该层级则展开为多行。如需更严格的分块,请在下游调整。
  • 不会生成锚点和别名。 即使各行重复,每一行也都是全新的映射。

示例输出

- name: Alice
  age: 30
- name: Bob
  age: 25

何时选择 YAML 而非 JSON

  • 手动编辑的配置文件,其中注释和多行字符串很重要。
  • Kubernetes 清单文件、CI 流水线以及 Ansible playbook。
  • 任何人们会像机器一样去阅读该文件的场景。

除此之外,JSON 更严格、解析更快,处理传输格式和自动生成的载荷时应优先选用 JSON。

常见问题

YAML 1.1 会把裸写的 NO 视为布尔值。转换器会为有风险的值加上引号,但若下游解析器仍强制推断类型,请在粘贴输出前为有问题的单元格加上引号,或改用把这些值当作普通字符串处理的 YAML 1.2 解析器。

使用此转换器则不行,每行数据都会变成平面映射。对于嵌套 YAML ,可围绕 YAML 库编写小型脚本,或先将其转换为 JSON 格式再在 JSON 编辑器中进行调整。

单元格会使用您选择的分隔符,通过 str_getcsv 进行解析。加引号的值会像真正的 CSV 解析器那样,保留其中嵌入的分隔符和引号。

会。您粘贴的CSV会发送到我们的服务器,因为解析和YAML序列化都在服务器上完成。数据仅用于生成YAML输出,不会被存储。

相关工具

此工具还提供其他语言版本