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
- Averigua si el sistema espera YAML 1.1 o 1.2 y qué esquema usa.
- Escribe los booleanos como
trueofalse. - Entrecomilla
yes,no,onyoffcuando sean texto. - 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.