Convertir YAML a JSON (y evitar errores de indentación)

Desde YAML 1.2, cualquier documento JSON es YAML válido. Convierte configuración YAML a JSON y vigila las trampas de indentación y de inferencia de tipos.

YAML y JSON están emparentados

YAML 1.2 es un superconjunto estricto de JSON, por lo que cualquier documento JSON ya es YAML válido. Convertir YAML a JSON consiste sobre todo en pasar una estructura basada en indentación a llaves y corchetes.

Reglas de indentación

YAML no permite tabuladores para indentar — usa espacios y mantén las claves hermanas a la misma profundidad. Un tabulador suelto o una clave desalineada es el error de parsing de YAML más habitual.

El problema noruego

Sin comillas, NO, yes, on y off pueden ser leídos como booleanos por algunos parsers, así que el código de país NO acaba siendo false. Entrecomilla esos valores para forzar que sigan siendo cadenas.

Convertir de forma segura

Valida el YAML primero y conviértelo después. Entrecomilla los escalares ambiguos y confirma que números, fechas y valores con cero a la izquierda mantienen el tipo que esperas.

Streams de YAML con varios documentos

Un único archivo YAML puede contener varios documentos separados por '---'. JSON no tiene equivalente — convierte cada documento por separado y, si una herramienta downstream necesita todos a la vez, envuélvelos en un array JSON. Los manifiestos de Kubernetes son el caso más típico.

Anchors y aliases

El anchor & y el alias * de YAML permiten reutilizar un nodo por referencia, pero JSON no tiene aliases. Un convertidor seguro resuelve cada alias a una copia del valor referenciado, lo que expande el documento. Ten en cuenta que volver a YAML pierde la compartición original.

Cuando YAML pierde fidelidad

Comentarios, anotaciones de tags como !!binary, tags personalizados, la diferencia entre estilo block y flow y el orden de las claves se pierden al convertir YAML a JSON. Para puro intercambio de datos no pasa nada; para configuración editada a mano que se volverá a editar, considera el YAML como la fuente real.