araç köşesi

Convertir JSON a YAML

Pase una configuración JSON a YAML con la sangría y las comillas correctas según YAML 1.2; el sentido YAML → JSON está en la misma página

Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.

Cómo funciona

Tiene un JSON exportado por una aplicación o devuelto por una API y necesita un archivo de configuración en YAML: un docker-compose.yml, un flujo de GitHub Actions o un manifiesto de Kubernetes. Pegue el texto JSON en el panel izquierdo; el YAML aparece en el derecho mientras escribe. Cada clave del objeto pasa a una línea «clave: valor», cada elemento de una lista a una línea «- elemento», y la estructura anidada se expresa con sangría de espacios; YAML no admite tabuladores, por eso la herramienta no ofrece esa opción. Las cadenas se escriben sin comillas, salvo cuando un lector YAML las tomaría por otra cosa: "true", "007", "1e3" o "2024-01-05" se entrecomillan para que sigan siendo texto, y la línea de resultado dice cuántas cadenas se protegieron así. El texto de varias líneas sale como bloque «|» y los números se conservan tal como estaban escritos en el JSON (1e3, 1.0). Elija 2 o 4 espacios de sangría, copie el resultado en el archivo de destino o descárguelo como .yaml. Para el sentido contrario, elija «YAML → JSON»: se leen mapas y listas en bloque, cadenas con y sin comillas, colecciones de flujo [ ] y { } de una sola línea, bloques «|» y «>» y comentarios; las anclas, los alias y las etiquetas de tipo no se admiten y se avisan con el número de línea. En ese sentido guarde la descarga con la extensión .json, porque el nombre propuesto es datos.yaml en los dos sentidos. Si el JSON no es válido, el aviso indica en español la línea y la columna donde está el problema.

Esta herramienta también se busca como json a yaml, convertir json a yaml, yaml a json, convertir yaml a json, json to yaml, yaml to json, pasar json a yaml online.

¿Qué es JSON?

JSON es el formato de texto con el que los programas se pasan datos entre sí. En esta página suele llegar como el archivo de ajustes que exporta una aplicación o como la respuesta de una API. Sus reglas son estrictas y esa rigidez ayuda: todas las claves van entre comillas dobles, los valores se separan con comas, no hay comentarios y después del último elemento no puede quedar una coma. El separador decimal es siempre el punto (3.5), aunque en español escribamos 3,5; una coma dentro de un número rompe el archivo. Los tipos son claros: 7 es un número y "7" es texto. Al pasar a YAML, la decisión de poner o no comillas sirve justo para que esa diferencia no se pierda.

¿Qué es YAML?

YAML es un formato de configuración pensado para que una persona lo lea y lo edite a mano; los archivos de docker-compose, GitHub Actions, Kubernetes, Ansible y Home Assistant son YAML. La estructura no se marca con llaves ni corchetes, sino con sangría: una línea que empieza más adentro que la anterior depende de ella. Por eso la sangría se hace solo con espacios y el tabulador está prohibido. Las claves van sin comillas, se pueden dejar comentarios con # y el texto de varias líneas se escribe tal cual con el signo |. El precio de esa comodidad es la ambigüedad: no, 007 o 2024-01-05 sin comillas dejan de ser texto en algunos lectores; esta herramienta los protege con comillas.

¿Cuál es la diferencia entre JSON y YAML?

Los dos representan el mismo modelo de datos: mapas (clave-valor), listas y valores simples. La diferencia está en la escritura y en quién los lee. JSON está hecho para máquinas: llaves y comillas obligatorias, sin comentarios, una sola manera de escribir cada cosa; por eso se genera y se analiza sin ambigüedad, y por eso las respuestas de API y los archivos de datos son JSON. YAML está hecho para personas: la estructura se lee por la sangría, las comillas casi nunca hacen falta, se admiten comentarios y el texto largo se escribe en bloque; por eso los archivos de configuración que se editan a mano son YAML. Además, YAML 1.2 es un superconjunto de JSON: todo JSON válido es también YAML válido, y por eso el sentido YAML → JSON de esta herramienta acepta directamente un texto JSON. El precio es la ambigüedad de tipos en los valores sin comillas: en JSON, "true" y true son cosas distintas; en YAML, true sin comillas es un valor lógico. El trabajo real de la conversión consiste en conservar esa diferencia, y la línea de resultado indica cuántas cadenas se entrecomillaron por ese motivo.

Trampas de YAML: tabuladores, yes/no y el 007 sin comillas

La estructura de un YAML se lee por la sangría, y la sangría solo puede hacerse con espacios. Una línea sangrada con tabulador es un error según la norma; por eso esta herramienta no ofrece tabuladores. Si un archivo YAML suyo da un error de «sangría incoherente», casi siempre hay un tabulador invisible: la orden «convertir tabuladores en espacios» de su editor lo resuelve.

La segunda trampa es la versión. En YAML 1.1, las palabras yes, no, on y off sin comillas eran valores lógicos; YAML 1.2 las trata como texto normal. La clave «on:» de GitHub Actions y el «restart: no» de docker-compose son los ejemplos clásicos: un lector antiguo convierte on en true y no en false. En el sentido YAML → JSON esta herramienta aplica la regla 1.2 (yes sigue siendo texto); en el sentido JSON → YAML entrecomilla esas palabras, para que la salida siga siendo texto sin importar qué lector la abra.

La tercera son las cadenas que cambian de tipo al perder las comillas. En JSON, "007" es texto; en YAML, 007 sin comillas es el número 7, 1e3 es mil y 2024-01-05 es una fecha. La herramienta pone comillas dobles a esas cadenas y dice cuántas en la línea de resultado. La misma regla se aplica a la cadena vacía (""), al texto con espacios al principio o al final, a los valores que contienen dos puntos y espacio («: ») y a los que empiezan por un signo con significado en YAML, como #, -, * o &.

El texto de varias líneas se escribe con el bloque «|»: debajo de «descripcion: |» van las líneas sangradas, y si el texto no termina en salto de línea se usa «|-». Este formato no necesita caracteres de escape, así que es el más legible para listas de comandos y descripciones largas.

Sangría, sentido y nombre del archivo: qué elegir en cada caso

Elija 2 espacios de sangría: todos los ejemplos de docker-compose, GitHub Actions y Kubernetes usan ese formato y así sus archivos coinciden con los de su equipo. Los 4 espacios solo ayudan en estructuras muy anidadas, cuando cuesta ver a qué nivel pertenece cada línea. Las dos opciones producen YAML válido; la diferencia está en la legibilidad.

El sentido YAML → JSON tiene un alcance limitado y declarado: mapas y listas en bloque, sangría anidada, cadenas con y sin comillas, colecciones de flujo [a, b] y {a: 1} de una sola línea, bloques «|» y «>», comentarios y un único «---» al principio. No se admiten anclas ni alias (&base, *base), etiquetas de tipo (!!str), claves complejas que empiezan por «?», valores entrecomillados o de flujo que ocupan varias líneas ni varios documentos en un mismo texto; si aparece algo de eso, el aviso indica la línea y no se produce una salida incorrecta en silencio. Para convertir un archivo con alias, escriba antes a mano el valor al que apunta cada alias.

El nombre de descarga es datos.yaml en los dos sentidos. La salida JSON → YAML puede guardarse con .yaml o con .yml; es el mismo formato: docker-compose.yml y GitHub Actions usan .yml, Kubernetes casi siempre .yaml. En el sentido YAML → JSON, termine el nombre del archivo descargado en .json; la línea de resultado se lo recuerda cada vez.

Preguntas frecuentes

¿Cómo convertir un archivo JSON a YAML?

Abra el archivo JSON con un editor de texto, copie su contenido y péguelo en el panel izquierdo de esta página; el YAML aparece al instante en el panel derecho. Puede copiar la salida en el archivo de destino (docker-compose.yml, un flujo de trabajo) o descargarla como .yaml. No hace falta subir el archivo: basta con el texto.

¿Se puede pasar de YAML a JSON en la misma página?

Sí: en «Sentido de la conversión» elija «YAML → JSON». Se leen mapas y listas en bloque, cadenas con comillas, colecciones de flujo de una línea, bloques «|» y «>» y comentarios. No se admiten anclas, alias, etiquetas de tipo ni varios documentos; si hay algo de eso, el aviso dice en qué línea está. Guarde el archivo descargado con la extensión .json.

¿Por qué algunos valores salen entre comillas en el YAML?

Porque sin comillas un lector YAML los tomaría por otro tipo: "true" sería un valor lógico, "007" el número 7, "1e3" mil, "2024-01-05" una fecha y "yes" un true en lectores antiguos (1.1). La cadena vacía, el texto con espacios al principio o al final y los valores con signos de YAML como #, - o «: » se entrecomillan por el mismo motivo. La línea de resultado dice cuántas cadenas se protegieron; las comillas no cambian el dato, lo conservan.

¿Qué diferencia hay entre un archivo .yaml y uno .yml?

Ninguna en el contenido: son dos extensiones para el mismo formato. docker-compose y GitHub Actions usan .yml; Kubernetes y la mayoría de las herramientas nuevas, .yaml. Use la que espere el programa de destino. La descarga de esta página se llama datos.yaml; puede cambiarle el nombre a .yml sin tocar nada más.

¿Los datos que pego se envían a algún servidor?

No. El análisis del texto y la generación del YAML o del JSON se hacen por completo en su navegador. Aunque pegue una configuración con la contraseña de una base de datos o una clave de API, el texto no sale de esta página ni se guarda en ningún sitio.