Convertir JSON a YAML
JSON a YAML convierte un documento a YAML en tu navegador y verifica el resultado parseándolo de vuelta. La regla que lo hace posible: una cadena se escribe entre comillas siempre que escribirla sin ellas daría otro resultado — así la cadena "no" conserva sus comillas, y también "007", "null" y "12:30".
¿Cómo funciona Convertir JSON a YAML?
Pasar de JSON a YAML parece la dirección fácil — YAML es un superconjunto, así que todo documento JSON ya es YAML válido. Eso es cierto, pero no es el trabajo. El trabajo es producir un YAML que una persona quiera leer, lo que significa estilo de bloque en lugar de estilo de flujo, y ahí es donde aparece el problema de la corrección.
Las comillas no son cosméticas
YAML resuelve los escalares sin comillas por patrones. Escribe la cadena no sin comillas y un lector YAML 1.1 cargará el booleano false. Escribe 007 y obtendrás el número 7. Escribe null, true, 12:30, 0x1f o .inf y cada uno volverá como algo que no es una cadena.
Por eso el emisor aplica las reglas de resolución al revés: una cadena se entrecomilla siempre que escribirla sin comillas se resolvería como otra cosa distinta de esa cadena. También entrecomilla los tokens que 1.1 resolvería de otra forma aunque 1.2 no lo haría, porque la salida debe significar lo mismo se lea donde se lea. Por eso el resultado lleva comillas en sitios que parecen innecesarios — cada una de ellas es estructural.
La ida y vuelta se comprueba, no se da por sentada
Cada conversión se vuelve a parsear y se compara con el JSON original, y el resultado se muestra en la franja de estadísticas. Una regla de entrecomillado que falla en un solo caso es justo el tipo de error que produce una salida plausible y una configuración corrupta, así que la comprobación se ejecuta sobre tu documento y no solo en una suite de pruebas.
Las cadenas multilínea se convierten en escalares de bloque
Una cadena con saltos de línea se escribe como un bloque |, que es la razón por la que la gente mete certificados, scripts y SQL en YAML en lugar de JSON: una clave PEM en JSON es una sola línea ilegible de escapes \n. El indicador de chomping depende de los datos — | cuando la cadena acaba en salto de línea, |- cuando no — así el byte final sobrevive.
Las claves se entrecomillan con la misma regla que los valores
Una clave también es un escalar. y: 2 se carga como {True: 2} en un lector 1.1, y on: — la segunda clave de todo workflow de GitHub Actions — es el ejemplo más conocido. Las claves reciben el mismo tratamiento que los valores, por eso "on" sale entrecomillado.
JSON
{
"regions": ["NO", "SE"],
"build": "007",
"enabled": true
}YAML
regions: - "NO" - "SE" build: "007" enabled: true
¿Qué opciones y casos límite admite Convertir JSON a YAML?
| Parámetro | Tipo | Valor predeterminado | Comportamiento y casos límite |
|---|---|---|---|
| Sangría | espacios | 2 | Espacios por nivel. YAML prohíbe por completo las tabulaciones en la indentación, así que esto es un recuento y no un carácter. |
| Sangrar secuencias | booleano | off | Off pone los guiones de la lista en la columna de la clave principal, que es como se ven los manifiestos de Kubernetes escritos a mano. On los indenta un nivel, que es lo que emiten la mayoría de las librerías. Ambos son válidos. |
| Ordenar claves | booleano | off | Alfabético en lugar de orden de documento. Útil para comparar dos configs que se escribieron en órdenes diferentes. |
| Inicio de documento | booleano | off | Emite el marcador ---. Es obligatorio al concatenar varios documentos en un solo archivo, como suelen ser los manifiestos de Kubernetes. |
| Cadenas ambiguas | entre comillas | siempre | no, yes, on, off, y, n, true, null, ~, 007, 12:30, 0x1f, .inf y la cadena vacía. Cada uno se resolvería en un no-string si se escribiera sin comillas. |
| Cadenas multilínea | escalar de bloque | on | Se escribe como un bloque |, con el indicador de truncamiento que coincide con si la cadena termina en un salto de línea, para que no se añada ni se pierda ningún byte. |
| Contenedores vacíos | [] y {} | explícito | Un array u objeto vacío se escribe en estilo flow. Omitirlos por completo haría que una lista vacía fuera indistinguible de un null. |
| null | null | null | Se escribe como la palabra null en lugar de dejarlo vacío o escribirlo como ~, porque es la forma de escribir que se lee igual para una persona y para cada parser. |
| Ida y vuelta | verificado | cada conversión | La salida se analiza de nuevo y se compara con la entrada. El resultado se informa en la tira de estadísticas en lugar de asumirse. |
Preguntas frecuentes
¿Por qué le puso comillas a mi cadena, si parece normal?
Porque escribirla sin comillas la resolvería como otra cosa. "no" se convierte en el booleano false en un lector YAML 1.1, "007" en el número 7, "12:30" en un número sexagesimal y "null" en null. Las comillas son lo único que mantiene el valor como cadena, algo que la comprobación de ida y vuelta de la franja de estadísticas confirma sobre tu documento real.
¿De verdad ocupa menos YAML que JSON?
Normalmente sí, y la franja de estadísticas muestra la cifra para tu documento. Quitar llaves, corchetes y las comillas de las claves elimina una proporción sorprendente de un archivo de configuración. Lo que YAML aporta frente a JSON no es el tamaño, sino los comentarios, que JSON no tiene forma de expresar, y las cadenas multilínea legibles.
¿Puedo recuperar mis comentarios?
No, y no hay nada que pueda hacerlo. JSON no admite comentarios, así que para cuando un documento es JSON los comentarios ya se han perdido — en la entrada no hay nada que recuperar. Si estás editando un archivo YAML, edita el YAML: una ida y vuelta por JSON elimina todos los comentarios y no devuelve nada a su sitio.
¿Qué estilo de lista debo usar?
Cualquiera; se parsean igual. Los guiones en la columna de la clave padre son el aspecto de los manifiestos de Kubernetes y los workflows de GitHub escritos a mano, y ahorran dos columnas de indentación en archivos profundamente anidados. Los guiones indentados son lo que emite la mayoría de las bibliotecas y lo que exigen algunas guías de estilo internas. Elige el que encaje con los archivos que ya tienes.
¿Por qué mi cadena multilínea no sale escapada como en JSON?
Porque se escribe como un escalar de bloque |, que conserva saltos de línea reales en lugar de escapes \n. Esta es la mejor razón para usar YAML en un archivo de configuración: un certificado PEM o un script de shell es legible en YAML y en JSON es una sola línea de 3,000 caracteres. El indicador de chomping se elige para conservar si tu cadena acababa o no en salto de línea.
¿Se sube mi JSON?
No. El parseo, la conversión y la comprobación de ida y vuelta se ejecutan en tu navegador. Puedes confirmarlo en el panel «Network». Aquí importa porque un JSON que se convierte a YAML suele estar a punto de convertirse en archivo de configuración, y los archivos de configuración contienen cadenas de conexión y claves.
¿Qué herramientas relacionadas debería usar después?
- Convertir XML a JSONConvierte sin perder atributos ni listas de un solo elemento
- Convertir JSON a XMLConvierte con atributos y nombres que XML acepta
- Convertir YAML a JSONConvierte YAML sin que «NO» se convierta en false
- Convertir mayúsculas y minúsculasRenombra identificadores tratando bien los acrónimos