YAML、TOML 与 JSON 转换
在 JSON、YAML 和 TOML 之间互相转换,或验证并格式化文档,每个错误都标明行和列。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
import json
import tomllib
text = 'name = "codeknife"\nports = [80, 443]\ndebug = false'
print(json.dumps(tomllib.loads(text), indent=2))功能
在 JSON、YAML 和 TOML 之间双向转换文档;两种格式相同时,则验证并格式化。每个语法错误都会标明所在的行和列。
使用方法
- 粘贴文档,或拖入文件。
- 在源格式选择文档的格式,在目标格式选择想要的格式。两边选同一种格式即为验证并格式化。
- 选择缩进,然后复制或下载结果,或用将输出用作输入把方向对调。
示例
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 都会被拒绝,并给出指明路径的提示,而不是被悄悄丢弃。
这个工具会把我的数据发送到别处吗?
不会。一切都在你的浏览器中完成。你输入的内容不会发送到我们的服务器。