Herramientas de desarrollo · Convertidores de sintaxis
El problema de Noruega: YAML 1.1 vs 1.2 y por qué el NO se vuelve falso
· Antecedentes
yaml formatos de datos depuración
En YAML 1.1 el valor sin comillas NO es booleano, que es la forma en que Noruega desaparece de las listas de países. Esta publicación cuenta la historia de la escritura implícita de YAML, qué cambió la especificación 1.2 y por qué el problema persiste en las herramientas actuales.
Una lista de países a los que les falta uno: NO analizado como falso y un informe de error de la oficina de Oslo
El error clásico es que un código de país sin comillas `NO` se vuelve falso. Las pruebas de ToolAcre demuestran que esto no sucede aquí: ambas opciones de esquema mantienen `NO`, sí, no, encendido y apagado como cadenas. Una historia que comenzara con Noruega desapareciendo dentro de este panel contradiría la implementación.
El ejemplo sigue siendo útil como advertencia de compatibilidad. Cuando otro consumidor YAML usa reglas heredadas, el escritor de ToolAcre cita cadenas ambiguas para que los lectores posteriores no las reinterpreten. El lector y el escritor están configurados para evitar el mismo fracaso que describe el esquema.
Noruega no desaparece en este conversor: NO permanece texto
Este repositorio documenta los esquemas Core y JSON restringidos de js-yaml y su comportamiento escalar observado. No contiene fuentes sobre los orígenes de 2001, las intenciones de los autores o los debates históricos sobre el diseño de YAML. Esas afirmaciones se omiten en lugar de reconstruirse a partir de la memoria.
El mecanismo actual es suficiente para una guía práctica. La resolución escalar simple ocurre bajo un esquema seleccionado; los valores citados siguen siendo texto; Las etiquetas no admitidas se rechazan. La evidencia sobre el código no debe extenderse a la historia de estándares sin fuentes.
La evidencia del repositorio cubre la configuración actual del analizador, no el historial de origen de YAML
YAML 1.1 comúnmente trata las variantes sí, no, activadas y desactivadas como booleanas. Eso explica por qué el problema de Noruega existe en algunos ecosistemas. ToolAcre no expone ningún modificador 1.1 y nunca demuestra una conversión octal sexagesimal o heredada en dicho modo.
Utilice el riesgo para revisar la salida del analizador externo, no para predecir este panel. Si otra herramienta produce resultados falsos, registre su biblioteca y esquema. El resultado de ToolAcre puede servir como una lectura contrastante de YAML 1.2, pero no como prueba de que la otra implementación está configurada incorrectamente para su contrato.
Los booleanos YAML 1.1 heredados explican el peligro pero no están habilitados aquí
El esquema estricto JSON reconoce solo grafías escalares compatibles con JSON. Core además resuelve valores de tilde y vacíos en enteros nulos, hexadecimales o `0o`, y números no finitos. Ninguno de los dos amplía el vocabulario booleano más allá de verdadero y falso.
Core Infinity y NaN luego se vuelven nulos en JSON con advertencias porque JSON no tiene representación para ellos. Por lo tanto, la diferencia entre las opciones de esquema es visible y, a veces, genera pérdidas, aunque el valor de Noruega se mantiene estable.
Ambas opciones enviadas son esquemas YAML 1.2
El comportamiento heredado sobrevive siempre que los valores predeterminados del analizador o las convenciones de la aplicación lo conserven. El convertidor no puede inventariar esas bibliotecas o versiones a partir de la evidencia del repositorio. Pruebe al consumidor real con un dispositivo que contiene palabras ambiguas y números numéricos parecidos.
El escritor YAML de ToolAcre agrega comillas protectoras alrededor de cadenas que los lectores mayores pueden escribir de manera diferente, incluidos `NO`, `yes`, `1.0`, `0755` y texto con apariencia de fecha. Este resultado de compatibilidad es mensurable y más seguro que una declaración general sobre la adopción de analizadores modernos.
El peligro sobrevive en otros analizadores; verificarlos en lugar de generalizar a partir de esta herramienta
Convertir `countries: [SE, NO, DK]`, `answers: [yes, no, on, off]`, `mode: 0755`, `octal: 0o755`, `version: 1.10` y `empty:`. En condiciones estrictas, todos excepto los valores nativos JSON siguen siendo cadenas. En Core, octal se convierte en 493 y el vacío se convierte en nulo; el país y las palabras de respuesta siguen siendo cadenas.
Cita cada token para forzar el texto. Luego escriba el resultado JSON en YAML e inspeccione las comillas que elige el serializador. Esta comparación con precisión de código revela las reglas de la herramienta sin pretender ejecutar un modo YAML 1.1 que no existe.
Ejemplo resuelto: códigos de país y similares escalares según los dos esquemas enviados
Los cambios de analizador específicos del idioma, los valores predeterminados de la versión y los contenedores del marco están fuera de esta implementación. Sus nombres y comportamiento cambian de forma independiente. Consulta y prueba el componente que consumirá la configuración.
El panel tampoco valida la semántica de la aplicación. Mantener `NO` como cadena es necesario para un código de país, pero no puede probar que `NO` sea un valor permitido en un esquema específico.
Conclusión: cite sus cadenas, conozca la versión de su analizador y cómo la conversión de YAML a JSON en el navegador hace visible la escritura implícita
Cita texto que se pueda volver a escribir, conoce el esquema realmente en uso y prueba al consumidor. Las dos opciones YAML 1.2 de ToolAcre hacen visibles sus diferencias limitadas y evitan deliberadamente la trampa booleana heredada.
La lección no es que cada analizador se comporta de una manera. Es que la escritura implícita es configuración, y un convertidor debería indicar esa configuración. Aquí la evidencia dice que Noruega sigue siendo `"NO"`.
Cuando la configuración cruza sistemas, agregue un dispositivo de interoperabilidad que contenga cada token ambiguo que permita su dominio. Conviértalo o analícelo en cada consumidor real y compare los valores escritos, no representados YAML. Esto detecta una tabla booleana heredada, una regla octal o una diferencia de valor vacío antes de que una lista de países o un modo de permiso llegue a producción. Citar cadenas conocidas sigue siendo la defensa portátil más sencilla porque registra la intención en el documento en lugar de depender de los valores predeterminados del entorno.