Loading...
Loading...
免费的在线 YAML JSON 互转工具——在 YAML 和 JSON 之间转换 Kubernetes 清单、Docker Compose 和 CI/CD 配置。
YAML(YAML 不是标记语言)和 JSON(JavaScript 对象表示法)都是现代软件开发中广泛使用的数据序列化格式。JSON 是 JavaScript 语法的子集——严格、简洁、普遍支持。YAML 更具表现力,支持注释、锚点、多行字符串和单文件多文档。
JSON 是 Web API 和网络数据交换的标准。每种编程语言都有内置或库支持来解析和生成 JSON。其严格语法消除了歧义,但对人类手动编写而言可能较为繁琐,尤其是缺乏适当工具支持时处理深度嵌套结构。
YAML 是 Docker Compose、Kubernetes、GitHub Actions、Ansible 和 CI/CD 流水线等工具中配置文件的首选格式。其基于缩进的语法和对注释的支持使人类编写的配置更易读。然而,YAML 的复杂性(隐式类型、多文档支持)可能导致细微的错误。
在这两种格式之间转换是连接不同系统时的常见需求。你可能需要将 Kubernetes YAML 清单转换为 JSON 以进行程序化处理,或将 JSON API 响应转换为 YAML 以包含在文档或配置中。此工具双向处理转换,并保持适当的格式化。
需要记住的关键差异:YAML 支持注释(#),JSON 不支持。YAML 使用缩进表示结构,JSON 使用花括号。YAML 有多种数据类型(日期、时间戳),JSON 只有字符串、数字、布尔值、null、对象和数组。YAML 可以定义可复用锚点(&)和别名(*)以避免重复。
在使用 Kubernetes 配置时,理解 YAML 和 JSON 之间的关系至关重要。虽然 Kubernetes 清单通常以 YAML 编写,但 Kubernetes API 服务器内部接受 JSON,YAML 在处理前会被转换为 JSON。这意味着任何 YAML 转 JSON 转换器对调试 Kubernetes 资源定义、验证配置语法正确性以及在 CI/CD 流水线中程序化生成或修改 Kubernetes 资源都直接有用。
标准数据不会。但 YAML 特有的功能如注释、锚点、多文档文件和自定义类型在转换为 JSON 时会丢失。JSON 转 YAML 是无损的,因为 JSON 是 YAML 能力的一个子集。
常见 YAML 问题:不一致的缩进(必须使用一致的空格,而非制表符)、字符串和数字的混淆(YAML 1.1 中 yes 和 true 是布尔值)、以及使用制表符(YAML 禁止使用制表符缩进)。
YAML 用于人类编写的配置文件(Docker、Kubernetes、CI/CD)。JSON 用于机器间数据交换(API、数据存储、WebSocket 消息)。YAML 对人类更可读,JSON 对机器更可靠。
YAML 1.1 将 "yes"、"no"、"on"、"off"、"true" 和 "false" 视为布尔值,除非显式用引号括起来。这是一个常见的错误来源——字符串 "yes" 变成了布尔值 true。对于必须保持为字符串的值,用引号括起来。YAML 1.2 移除了 "yes" 和 "no" 的隐式类型转换,但许多工具仍使用 YAML 1.1。
不一定。YAML 基于缩进的语法通常需要比 JSON 更多的行数。不过,YAML 的锚点(&)和别名(*)可以通过引用先前定义的节点来减少复杂文档中的重复,这是 JSON 无法做到的。对于简单的扁平数据,JSON 通常更紧凑。