# YAML、TOML 与 JSON 转换

在 JSON、YAML 和 TOML 之间互相转换，或验证并格式化文档，每个错误都标明行和列。

https://codeknife.dev/zh/yaml-toml-json-zhuanhuan/

## 功能

在 JSON、YAML 和 TOML 之间双向转换文档；两种格式相同时，则验证并格式化。每个语法错误都会标明所在的行和列。

## 使用方法

1. 粘贴文档，或拖入文件。
2. 在**源格式**选择文档的格式，在**目标格式**选择想要的格式。两边选同一种格式即为验证并格式化。
3. 选择缩进，然后复制或下载结果，或用**将输出用作输入**把方向对调。

## 示例

YAML 中的 `name: codeknife` 和 `ports: [80, 443]`，在 JSON 中是 `{"name": "codeknife", "ports": [80, 443]}`，在 TOML 中是 `name = "codeknife"` 和 `ports = [ 80, 443 ]`。

## 须知

- YAML 按 1.2 版本读取：只有 `true` 和 `false` 是布尔值，所以 `yes` 和 `on` 仍是文本。含多个 `---` 部分、重复键或过多别名的文档会被拒绝。
- TOML 顶层需要一张表，且没有 null。把列表或 null 转成 TOML 会得到指明路径的错误。
- TOML 中的日期在格式化 TOML 时仍是日期，转成 JSON 或 YAML 时则变为文本。
- 转换时不会保留注释，因为 JSON 没有注释，读取的数据也不带注释。

## 如何只验证或格式化而不转换？

在“源格式”和“目标格式”中选择同一种格式。文档会被严格读取，因此每个错误都会标明行和列，有效的文档则以统一的缩进重新写出。

## 常见问题

### 为什么 YAML 中的 yes、no、on 仍是文本？

本工具按 YAML 1.2 读取，其中只有 true 和 false 是布尔值。yes、no、on、off 保持为普通文本，这与一些较旧的 YAML 1.1 解析器不同。

### 为什么不是每个 JSON 文档都能变成 TOML？

TOML 的顶层是一张表，且没有 null。顶层的列表或任何位置的 null 都会被拒绝，并给出指明路径的提示，而不是被悄悄丢弃。

### 这个工具会把我的数据发送到别处吗？

不会。一切都在你的浏览器中完成。你输入的内容不会发送到我们的服务器。