数据交换:YAML To JSON
使用 yaml 库(YAML 1.2 core schema)解析一个 YAML 文档,并输出为缩进的 JSON。注释会被丢弃,锚点和别名会被展开,yes 或 2024-01-01 这样的值保持为字符串。
把用 YAML 写的设置发送给只接受 JSON 的 API 或 JSON Schema 校验器。
适用场景
- 把用 YAML 写的设置发送给只接受 JSON 的 API 或 JSON Schema 校验器。
- 确认 CI 或 Kubernetes 文件中值的实际类型,例如版本号是字符串还是数字。
使用方法
- 粘贴单个 YAML 文档,或加载 .yaml/.yml 文件。
- 如果出现错误,在报告的行检查缩进、重复的键和 --- 分隔符。
- 检查 JSON 输出中的字符串与数字,然后复制。
YAML 输入
# deployment settings service: billing-api replicas: 2 version: "1.10" enabled: yes ports: - 80 - 443 env: LOG_LEVEL: info
JSON
{
"service": "billing-api",
"replicas": 2,
"version": "1.10",
"enabled": "yes",
"ports": [
80,
443
],
"env": {
"LOG_LEVEL": "info"
}
}功能与限制
解析在浏览器中进行。输出始终是 2 空格缩进的 JSON;没有压缩选项。
遵循 YAML 1.2 规则:yes/no/on/off 是字符串而不是布尔值,不带引号的日期保持为字符串。0o17 是八进制(15)。
合并键(<<: *anchor)不会被合并,而是作为字面量键 "<<" 出现。同一映射中的重复键会报错。
超过 2^53 的整数在 JSON 中会丢失精度。请在 YAML 中给长 ID 加引号。
FAQ
能转换用 --- 分隔的多文档文件吗?
不能。多个文档会导致错误 "Source contains multiple documents"。请一次粘贴一个文档。开头单独一个 --- 没有问题。
为什么 enabled: yes 在 JSON 中是字符串?
解析器遵循 YAML 1.2,只有 true 和 false 是布尔值。如需 JSON 布尔值,请写 true/false。
支持锚点和别名吗?
支持。像 *base 这样的别名会被替换为锚点值的副本。但 YAML 1.1 的合并键 << 不会生效。