转换完全在浏览器内进行,不会上传任何数据。
什么是 YAML 转换工具?
YAML 与 JSON 用不同的语法描述同一种结构化数据。YAML 采用缩进布局,支持注释、多文档流、可复用 anchor,对人类更友好,主宰着 DevOps 配置领域:Kubernetes 清单、Helm chart、GitHub Actions 工作流、GitLab CI 流水线、Docker Compose、Ansible playbook,以及几乎所有现代基础设施即代码工具。JSON 语法严格,对机器更友好,主宰着 API、应用配置、日志和服务间消息。当你需要把这两个世界粘合起来——例如把 Helm 的 values.yaml 喂给 Terraform 变量、或把 Kubernetes 清单导入只支持 JSON 的策略引擎——就需要一个快速、无损、保留类型的转换器。 DevFormatLab 的 YAML 转换工具在浏览器里完成四向翻译:YAML → JSON、JSON → YAML、YAML → Java .properties(带点路径扁平化与 [n] 数组下标)、.properties → YAML(处理 \uXXXX、\n、\t 转义以及反斜杠续行)。解析器遵循 YAML 1.2,因此 YAML 1.1 那种把 yes / no / on / off 自动当作布尔值的坑不会再咬到你——它们会按你写的字符串保留下来。数值、布尔、null 在往返中保持类型;anchor 与 alias 会被解析为最终值,输出一个自包含的 JSON;用 --- 分隔的多文档 YAML 会转换为 JSON 数组,让你把整份 kubectl apply -f 载荷喂给只支持 JSON 的流水线。严格校验会指出缩进或语法错误的精确行号,往往是 30 秒解决问题与一下午盲目排查的区别。所有处理都在本地完成——不上传,生产配置和带密钥的清单都可以放心用。
功能特性
- YAML → JSON 转换并保留类型(数字、布尔、null)
- JSON → YAML 转换并采用 2 空格缩进
- YAML → Java .properties(点路径扁平化,数组用 [n])
- .properties → YAML(处理 \uXXXX、\n、\t、反斜杠续行)
- 遵循 YAML 1.2 —— yes / no / on / off 保留为字符串,不强转布尔
- 多文档 YAML(--- 分隔)转换为 JSON 数组
- anchor 与 alias 自动解析为自包含值
- 严格校验,错误定位到具体行号
- 100% 浏览器运行,不上传任何数据
使用步骤
- 在方向选择器里挑一个:YAML → JSON、JSON → YAML、YAML → Properties、Properties → YAML。
- 在左侧输入面板粘贴源内容,或点「Try sample」加载与当前方向对应的示例片段。
- 右侧立即显示转换结果。数值与布尔在 YAML / JSON 之间正确往返;得益于 YAML 1.2,yes / no / on 会保持为你写的字符串。
- 如果是 Kubernetes 清单或其他多文档 YAML,请把所有 --- 分隔符一起粘贴——每份文档会成为输出 JSON 数组的一项。
- 如果源内容有语法错误(Tab 与空格混用、缩进不一致、字符串没闭合),状态栏会显示精确行号,直接定位修复。
- 点「复制」或「下载」导出结果;用「Swap」翻转方向,在上一次的输出上再跑一遍。
常见问题
为什么出现「YAMLException: bad indentation of a mapping entry」?
▾
YAML 用空格(绝不要用 Tab)缩进,同一层级的所有子键必须缩进一致。最常见的原因是 Tab 与空格混用或缩进差了一格: # 错误:第二个键少缩一个空格 server: host: example.com port: 8080 # 正确 server: host: example.com port: 8080 转换器会标出具体出错行号。请把编辑器设置为「插入空格」,并统一用 2 空格缩进。
为什么我的「yes」「no」「on」被转成 true / false 了?
▾
YAML 1.1 把 yes/no/on/off 视为布尔(Ruby 和 PyYAML 用户尤其容易踩坑)。DevFormatLab 遵循 YAML 1.2,只有 true / false / null 是保留字,因此 feature: yes 会转成 {"feature": "yes"},而不是 {"feature": true}。 如果你需要布尔,请写 feature: true。如果确实需要字符串 "true",请加引号:flag: "true"。
如何转换多文档的 Kubernetes 清单?
▾
把整个文件(含 --- 分隔符)一起粘贴。转换器会解析每个文档并输出 JSON 数组: apiVersion: v1 kind: ConfigMap --- apiVersion: v1 kind: Service 会变成: [ { "apiVersion": "v1", "kind": "ConfigMap" }, { "apiVersion": "v1", "kind": "Service" } ] 非常适合把 kubectl apply -f 的多文档载荷接入只支持 JSON 的流水线。
为什么 YAML → JSON 之后大整数精度丢失?
▾
JSON 的 number 是 IEEE-754 双精度,超过 2^53(9 007 199 254 740 992)的整数会被静默四舍五入。Twitter snowflake ID、Kafka offset 都是常见受害者。 解决:把数字在 YAML 里加引号,保持为字符串: id: "1234567890123456789" 转换结果为 {"id": "1234567890123456789"},消费端再按需解析,可以保留完整精度。
如何把 YAML 转换为 Java .properties?
▾
把方向选择器切到 YAML → Properties。嵌套对象会变成点路径,数组用 [0]、[1] 下标: # YAML spring: datasource: url: jdbc:mysql://localhost:3306/app profiles: - dev - test # .properties 输出 spring.datasource.url=jdbc:mysql://localhost:3306/app spring.profiles[0]=dev spring.profiles[1]=test Properties → YAML 反向亦支持,并且能正确还原 \uXXXX、\n、\t 转义与反斜杠续行。
YAML 的 anchor (&) 与 alias (*) 会被保留吗?
▾
会被解析为最终值。例如: defaults: &defaults { retries: 3 } service: { <<: *defaults, name: api } 在 JSON 侧变成 {"defaults": {"retries": 3}, "service": {"retries": 3, "name": "api"}}。JSON 没有共享引用机制,这种展开是预期行为——你得到的是一份自包含的文档。
相关工具
JSON 的格式化、压缩、校验与美化,错误位置高亮。
并排比对两份 JSON,行级红绿高亮,可按键名排序忽略顺序差异。
去重、删除空行、去除空格,UTF-8 ↔ Shift-JIS 编码转换,自动检测乱码。
对文本或文件进行 Base64 / Base64URL 编码与解码,实时、纯浏览器运行。
对 URL、查询字符串和 URI 组件进行编码/解码,支持 %20 与 + 空格模式。
在浏览器内为文本或文件生成 MD5、SHA-1、SHA-256、SHA-384、SHA-512 哈希。
Unix 时间戳(秒 / 毫秒)与人类可读日期互转,支持多时区。
解码 JWT (JSON Web Token),查看 Header / Payload / Signature,时间字段自动转为可读日期与过期状态。
实时测试正则表达式,匹配高亮,附常用预设。
把 JSON 转为适合嵌入代码的字符串字面量(双引号与反斜杠已转义)。
Canonical: https://devformatlab.com/zh/yaml-converter