Guía

Booleanos en YAML: por qué yes, no, on y off cambian según la versión

Evita que palabras como yes, no, on y off cambien de cadena a booleano al mover YAML entre analizadores y versiones.

por Tools in a Tab · Publicado el · Actualizada

Respuesta breve

En YAML 1.2 Core, true y false son booleanos; también se reconocen True, TRUE, False y FALSE. Las palabras yes, no, on y off sin comillas son cadenas. En YAML 1.1 se reconocían como booleanos. Si no controlas la versión y el esquema del analizador, pon entre comillas cualquier palabra que deba conservarse como cadena.

Usa el conversor YAML a JSON para comprobar tipos con YAML 1.2 Core o salta a la lista de control.

El mismo texto puede producir tipos distintos

Considera esta configuración:

respuesta: yes
interruptor: off
publicar: true

Con resolución YAML 1.1, yes y off pueden convertirse en true y false. Con el esquema Core de YAML 1.2, este ejemplo produce exactamente:

{
  "respuesta": "yes",
  "interruptor": "off",
  "publicar": true
}

Las reglas de resolución de YAML 1.2.2 Core admiten seis formas: true, True, TRUE, false, False y FALSE. Combinaciones como tRuE siguen siendo cadenas. Las minúsculas true y false son la opción portable y coinciden con la sintaxis JSON. El tipo booleano de YAML 1.1 documenta las formas históricas y, n, yes, no, on y off, con distintas mayúsculas.

Forma segura de escribirlos

Usa booleanos explícitos cuando el dato sea lógico y comillas cuando sea texto:

respuesta: 'yes'
interruptor: 'off'
publicar: true

Esto importa especialmente en códigos de país, respuestas importadas de un formulario, nombres de estados y valores de configuración. Cambiar una cadena por un booleano puede alterar una comparación, una columna o una llamada a una API sin que el YAML parezca incorrecto.

Comprueba la conversión real

Pega un caso pequeño en el conversor de YAML a JSON y observa tanto el valor como su tipo: las cadenas aparecen con comillas en JSON y los booleanos no. La herramienta usa YAML 1.2 Core y rechaza una directiva %YAML 1.1. No simula analizadores antiguos: cambiar esa directiva no basta para conservar los tipos anteriores. La prueba decisiva es la del analizador que ejecutará tu aplicación.

Al convertir en sentido contrario con JSON a YAML, parte de tipos JSON ya explícitos. Después revisa las cadenas que podrían parecer valores especiales para el consumidor final.

Lista de control

  1. Averigua si el sistema espera YAML 1.1 o 1.2 y qué esquema usa.
  2. Escribe los booleanos como true o false.
  3. Entrecomilla yes, no, on y off cuando sean texto.
  4. Convierte una muestra y compara los tipos, no solo la apariencia.

Las comillas no son ruido en este caso: documentan que el dato debe permanecer como texto en todos los entornos.