Salida JSON
Convertir el YAML de ejemplo produce esta salida:
{
"server": {
"host": "0.0.0.0",
"port": 8080,
"ssl": true
},
"database": {
"url": "postgresql://localhost:5432/myapp",
"pool_size": 10,
"timeout": 30
},
"logging": {
"level": "info",
"format": "json",
"outputs": [
"stdout",
"file"
]
}
}
La jerarquia de indentación se convierte en objetos JSON anidados. Los arreglos YAML se convierten en arreglos JSON. Los strings YAML sin comillas que no son booleanos ni números se convierten en strings JSON.
Lo que se Convierte sin Problemas
La mayoría del YAML se convierte limpiamente a JSON sin perdida de información:
| Tipo YAML | Equivalente JSON |
|---|---|
Mapeo (key: value) | Objeto ({"key": "value"}) |
Secuencia (- item) | Arreglo (["item"]) |
| String | String |
| Entero | Number |
| Float | Number |
Booleano (true/false) | Booleano |
Null (null, ~, vacio) | null |
Para un manifiesto típico de Kubernetes o un archivo de Docker Compose, la conversión no tiene perdida desde la perspectiva de los datos.
Caracteristicas que se Pierden
Comentarios
Los comentarios YAML (líneas que comienzan con # o comentarios inline # comentario) se descartan por completo. JSON no tiene sintaxis de comentarios. Si tu configuración YAML usa comentarios para documentar campos, esas explicaciones se pierden en la salida JSON. No hay solución para esto excepto mover los comentarios a un esquema separado o un README.
Anclajes y Alias
YAML te permite definir un bloque reutilizable con un anclaje y referenciarlo en otro lugar con un alias:
defaults: &defaults
timeout: 30
retries: 3
production:
<<: *defaults
host: prod.example.com
staging:
<<: *defaults
host: staging.example.com
En la salida JSON, *defaults se expande completamente tanto en production como en staging. La notación de anclaje se pierde y los valores compartidos se duplican.