YAML格式化器:在线格式化、验证和美化YAML
YAML(YAML Ain't Markup Language)已成为云原生生态系统的配置格式选择——Kubernetes清单、Docker Compose文件、Ansible playbook、GitHub Actions工作流和CI/CD流水线都使用YAML编写。其人性化的语法(没有括号、简单字符串不需要引号、允许注释)使其比JSON更具可读性,但它依赖缩进来定义结构使其特别容易出错。在应该有两个空格的地方出现一个制表符,或者一个键在错误嵌套级别上的未对齐,都可能静默地改变整个配置的语义——或者在第47行产生一个神秘的解析错误,而问题实际上发生在第12行。我们的YAML格式化器使用一致的2空格缩进来美化杂乱的YAML,使用精确的错误位置和通俗易懂的解释来验证语法,并在YAML和JSON之间双向转换。它检测常见陷阱——用于缩进的制表符(YAML禁止制表符)、同一文档内不一致的缩进、重复的键(YAML静默覆盖)以及挪威问题(未加引号的国家代码如'NO'被解释为布尔值false)。该工具处理多文档YAML文件(由---分隔)并支持YAML 1.2规范,包括锚点、别名、标签和多行字符串风格。所有处理都在您的浏览器中运行——您的Kubernetes secrets、部署配置和CI/CD凭证永远不会离开您的设备。
YAML格式化器
免费 · 无需注册
分步指南
粘贴、输入或上传YAML
将您的YAML粘贴到编辑器中或上传.yaml/.yml文件。编辑器包含标量、键、序列和锚点的语法高亮。多文档YAML(由三个连字符---分隔的文档)会被检测到,每个文档独立格式化。该工具甚至处理嵌入在字符串字段中的YAML(例如CloudFormation模板),通过提取和格式化嵌入的YAML。
格式化和验证
点击"格式化"以使用一致的2空格缩进、适当的引号(在需要时为模糊值添加引号)和规范化的锚点/别名引用来美化YAML。验证器自动运行并标记:制表符(精确的行和列)、不一致的缩进、重复的映射键以及由于YAML隐式类型强制而可能被误解的值。每个错误链接到编辑器位置并带有修复建议。
转换为JSON或下载
使用"转换为JSON"按钮从您的YAML生成等效的JSON——当工具或API需要JSON输入但您更喜欢用YAML编写配置时非常有用。反向操作("从JSON转换")也可用。将格式化的YAML下载为.yaml文件,复制到剪贴板,或将解析的数据结构作为交互式树查看。
使用技巧与最佳实践
YAML 1.2(2009年)解决了最臭名昭著的YAML陷阱:在YAML 1.1中,未加引号的"yes"、"no"、"on"、"off"、"true"和"false"被解释为布尔值。国家代码如"NO"(挪威)和"YES"变成布尔值false和true——这个bug如此常见以至于被称为"挪威问题"。YAML 1.2仅将"true"和"false"(不区分大小写)识别为布尔值。我们的格式化器检测模糊值并建议为其添加引号。
YAML缩进的黄金法则:每个嵌套级别使用2个空格,绝不使用制表符。YAML 1.2明确禁止使用制表符进行缩进(制表符没有缩进值——它们在解析器的列计数器中显示为0)。如果您从将空格转换为制表符的来源(某些聊天应用程序、Web表单或PDF)复制YAML,验证器将标记每个制表符及其精确位置。
YAML锚点(&)和别名(*)让您定义一次值并在同一文档中多次引用它。例如:`defaults: &defaults timeout: 30 retries: 3`定义了一个锚点,`service_a: <<: *defaults`将这些默认值合并到service_a中。这在Docker Compose中被广泛用于在服务之间共享公共配置,在Kubernetes中用于减少大型清单中的重复。
YAML中的多行字符串有两种风格:字面量块标量(|),保留换行符——用于shell脚本、SQL查询或任何换行符重要的内容;折叠块标量(>),将换行符折叠为空格(类似HTML)——用于长段落、描述或应重排的文本。使用|-(去除尾随换行符)或|+(保留尾随换行符,包括额外的换行符)覆盖默认的尾随换行符行为。
YAML对注释(# 注释)的支持是它相比JSON在配置文件方面最大的优势。注释让您记录为什么选择某个值、链接到Jira工单、标记TODO和解释非显而易见的设置——所有这些都不会破坏解析器。JSON和JSON5的变通方法(如"__comment": "explanation")是技巧;在YAML中,注释是一等公民。
YAML合并键(<<)是一种特殊的映射键,将一个映射的键合并到另一个映射中。它是YAML 1.1规范的一部分并被广泛支持,虽然不在YAML 1.2核心中。Docker Compose大量使用合并键与锚点来定义服务模板。然而,合并键在嵌套映射方面有已知的边缘情况——要明确深合并与浅合并的预期。
在CI/CD中在部署前验证YAML文件。一个在本地测试通过但在CI中放错位置的YAML会浪费开发者时间。在流水线中添加YAML lint步骤:`yamllint .`或`python -c "import yaml; yaml.safe_load(open('config.yaml'))"`。我们的在线验证器现在与GitHub Actions集成——在您的仓库中添加一个徽章,显示YAML配置的验证状态。
在调试以神秘的"error converting YAML to JSON"启动失败的Kubernetes pod时,问题几乎总是清单中的YAML格式错误。我们的格式化器捕获缩进错误、重复键(在YAML中最后一个值静默胜出——这是设置被神秘忽略的常见原因)以及在错误嵌套级别放置的字段。格式化您的清单,然后使用kubectl重新应用。
常见问题解答
YAML的可读性是有代价的——一个缩进错误就能破坏整个部署。我们的格式化器和验证器即时捕获这些错误,提供人类可读的错误消息和确切的行号。无论您是在编写Kubernetes清单、Docker Compose文件还是CI/CD流水线,都可以在您的浏览器中免费格式化和验证您的YAML。
免费试用此工具 →open_in_new