Guía
Anchors, aliases y merge keys en YAML
Entiende cómo reutiliza nodos YAML, por qué JSON no conserva referencias y qué revisar antes de convertir un archivo con merges.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
Un anchor asigna un nombre a un nodo YAML y un alias vuelve a referirse a ese nodo. Permiten expresar reutilización dentro del grafo de datos.
defaults: &defaults
timeout: 30
retries: 3
worker:
config: *defaults
&defaults crea el anchor y *defaults es el alias. La especificación
YAML 1.2.2 explica que
los nombres de anchor son un detalle de serialización: el dato resuelto contiene
nodos y referencias, no el nombre como propiedad ordinaria.
Qué ocurre al pasar a JSON
JSON representa árboles de objetos y arrays sin una sintaxis de referencias. Un conversor debe elegir entre expandir el nodo, inventar un esquema de referencias o rechazar la entrada. Expandir puede duplicar datos y no representa un ciclo.
El conversor YAML a JSON rechaza anchors y aliases para no ocultar esa decisión. Si quieres JSON, sustituye primero las referencias por datos explícitos y comprueba el tamaño resultante.
Merge key <<
Muchos parsers admiten << para combinar mappings:
defaults: &defaults
timeout: 30
retries: 3
worker:
<<: *defaults
retries: 5
El resultado esperado suele conservar timeout: 30 y sobrescribir retries
con 5, pero el merge key no forma parte del esquema Core de YAML 1.2 y el
comportamiento depende del parser y de sus extensiones. Confirma precedencia y
compatibilidad en el sistema de destino.
Checklist de migración
- Busca
&,*y claves<<fuera de cadenas y comentarios. - Resuelve las referencias con el mismo parser que usa la aplicación original.
- Detecta ciclos antes de expandir.
- Decide si la duplicación de datos es aceptable.
- Valida después el JSON y compara valores sobrescritos.
Una conversión segura hace explícita la pérdida de referencias; no las elimina silenciosamente.