JSON a YAML
Conversor online gratuito de JSON a YAML. Convierte JSON a configuración estándar YAML 1.2 con un solo clic. Soporta indentación personalizada, reparación inteligente de errores de sintaxis JSON y genera archivos YAML para Kubernetes, Docker Compose, GitHub Actions y más.
Relacionado
¿Qué es YAML? ¿Por qué convertir JSON a YAML?
YAML (YAML Ain't Markup Language, es decir, YAML no es un lenguaje de marcado) es un formato de serialización de datos amigable para humanos, cuyo objetivo de diseño es hacer que los archivos de configuración sean fáciles de leer y escribir. YAML 1.2 es la versión estable actual (yaml.org/spec/1.2.2), propuesta por Clark Evans en 2001, y hoy se utiliza ampliamente en prácticamente todas las herramientas DevOps: Kubernetes, Docker Compose, GitHub Actions, Ansible, CircleCI, Prometheus, etc. La filosofía de diseño de YAML prioriza la legibilidad sobre la concisión, por lo que sacrifica la sintaxis compacta y amigable para máquinas de JSON a cambio de una estructura de indentación y comentarios más cómoda para la edición humana.
JSON y YAML son superconjuntos mutuos (JSON es un subconjunto de YAML), por lo que técnicamente pasar de JSON a YAML es un simple reformateo sintáctico, pero su significado práctico es enorme: ①Mayor legibilidad: YAML usa indentación en lugar de llaves y comas, y las comillas en las claves pueden omitirse, mejorando notablemente la legibilidad; ②Soporte de comentarios: YAML admite comentarios con #, mientras que el estándar JSON no (aunque muchas herramientas los aceptan mediante shebang #! o análisis laxo); ③Soporte multi-documento: YAML admite varios documentos en un solo archivo separados por --- (multi-document); en Kubernetes un mismo archivo yaml puede contener Deployment+Service+ConfigMap; ④Reconocimiento automático de tipos: YAML identifica números, booleanos y null sin necesidad de comillas, lo que hace las configuraciones más limpias.
YAML tiene tres estructuras de datos básicas: ①Escalares (scalar): valores únicos como cadenas, números, booleanos, null; ②Secuencias (sequence): similares a los arrays JSON, representadas con - al inicio; ③Mapeos (mapping): similares a los objetos JSON, representados con clave: valor. YAML también tiene estructuras avanzadas: anclas (&anchor) y referencias (*anchor) que permiten reutilizar bloques de configuración; el estilo bloque (| conserva saltos de línea) y el estilo plegado (> convierte saltos en espacios) controlan la salida de cadenas multilínea; las etiquetas explícitas (!!str, !!int) fuerzan el tipo. Estas características hacen a YAML más potente que JSON en escenarios de configuración compleja.
Los motivos habituales para convertir JSON a YAML son: ①El proyecto debe desplegarse en Kubernetes pero la configuración existente está en JSON; ②El equipo decide unificar la gestión de todos los archivos de configuración en YAML; ③Al integrarse con APIs de terceros se necesita un cuerpo de petición en YAML (OpenAPI, Swagger); ④Las configuraciones JSON exportadas desde API Gateway o plataformas CI/CD deben convertirse a YAML legible; ⑤Convertir datos mock de JSON a YAML para crear fixtures de prueba. Esta herramienta cubre todos estos escenarios.
El proceso de conversión es esencialmente un reasignación de estructuras de datos: JSON.parse() analiza el texto en un objeto JavaScript (AST), y la función dump() de js-yaml recorre recursivamente cada nodo: cadenas, números, booleanos y null se emiten directamente, los arrays se convierten en listas con -, y los objetos anidados en niveles de indentación. Todo el proceso se realiza localmente, sin dependencias externas (salvo la propia librería js-yaml), y el resultado es 100% compatible con cualquier parser YAML estándar.
Casos de uso
- Preparar manifiestos de Kubernetes: convierte configuraciones JSON generadas por plantillas Helm o herramientas CI/CD a YAML estándar de Deployment/Service
- Configuración Docker Compose: convierte JSON exportado de docker-compose.json o plataformas de contenedor a un docker-compose.yml legible
- Workflows de GitHub Actions / GitLab CI: convierte configuraciones JSON generadas por scripts de automatización o herramientas de plantillas a archivos YAML de pipeline
- Crear Ansible Playbooks: convierte JSON de orquestación de tareas al formato YAML que espera Ansible, facilitando la revisión de código en equipo
- Unificación de configuración de microservicios: migra configuraciones JSON dispersas en distintos microservicios a un repositorio YAML unificado para control de versiones y auditoría
- Generar YAML desde Swagger/OpenAPI: convierte JSON Schema exportado de herramientas de API a la especificación YAML estándar de OpenAPI
- Aprender la sintaxis YAML: usa una estructura JSON existente para ver de forma intuitiva cómo YAML representa objetos anidados, arrays y valores especiales
- Comparar y convertir archivos de configuración: alterna rápidamente entre JSON y YAML para comparar formatos y elegir el más adecuado para tu proyecto
Cómo Usar
- Pega el contenido JSON en el editor izquierdo, o haz clic en el botón de subir para seleccionar un archivo .json / .txt, o pulsa "Ejemplo" para cargar una muestra predefinida
- La herramienta convierte automáticamente en tiempo real siguiendo la especificación YAML 1.2; el resultado aparece al instante a la derecha y puedes cambiar entre 2/4 espacios de indentación desde el menú desplegable
- Si el JSON tiene errores de sintaxis (comas finales, comillas simples, comentarios, etc.), aparecerá el botón "Reparar JSON" en la parte inferior; púlsalo para corregirlos automáticamente con un clic
- Cuando necesites escape Unicode o escape de cadenas, usa los botones "Chino ↔ Unicode" y "Escapar/Desescapar" de la barra inferior para hacerlo con un solo clic
- Cuando el resultado te convenza, pulsa el botón "Copiar" para copiar el contenido YAML o "Descargar" para guardarlo como archivo output.yaml listo para tu proyecto
Características
- Salida conforme a YAML 1.2: cumple con la especificación oficial YAML 1.2, lista para usar en Kubernetes, Docker Compose, GitHub Actions, Ansible y otras herramientas populares
- Indentación personalizable: alterna entre 2 y 4 espacios para adaptarse al estilo de cualquier proyecto (YAML recomienda oficialmente 2 espacios)
- Reparación inteligente de JSON: motor tryFixJSON integrado que detecta y corrige automáticamente errores comunes como comas finales, comillas simples y comentarios antes de convertir
- Conversión Unicode bidireccional: convierte caracteres chinos a escapes Unicode \uXXXX o los restaura al chino original, ideal para escenarios de internacionalización
- Escape / desescape de cadenas: añade o elimina barras invertidas de escape para comillas dobles, barras invertidas y saltos de línea en JSON con un solo clic
- Formato y compresión de JSON: el panel izquierdo permite formatear JSON con indentación bonita o comprimirlo en una sola línea mínima
- Edición bidireccional en tiempo real: pega JSON a la izquierda y visualiza el YAML al instante a la derecha. La conversión es automática al escribir
- Subida y descarga de archivos: soporta archivos .json/.txt y descarga el resultado como config.yaml u output.yaml con un solo clic
- Atajos de teclado: Shift+Cmd/Ctrl+F formatea, C comprime, U convierte a Unicode, Z deshace, / escapa, . desescapa, O sube, D descarga, K limpia
- Paneles arrastrables e historial: en PC puedes arrastrar los paneles para ajustar el ancho; guarda automáticamente las últimas 200 entradas para revisarlas
- Salto al formateador JSON: tras la conversión salta con un clic al formateador JSON para embellecer, validar o comprimir los datos de origen
- Procesamiento local en el frontend: todo el análisis, conversión y escape se realiza con JavaScript en el navegador; las configs sensibles nunca se suben
Preguntas Frecuentes
¿Cómo se convierte JSON a formato YAML?
Pega el contenido JSON en el editor izquierdo y la herramienta lo convertirá automáticamente al formato legible de YAML 1.2: los pares clave-valor pasan a key: value, los objetos anidados se representan por indentación y los arrays usan la sintaxis de lista - item. Una vez convertido, puedes copiar o descargar el resultado como archivo .yaml. Si el JSON tiene errores de sintaxis (comas finales, comillas simples, comentarios, etc.), la herramienta intentará repararlos automáticamente antes de convertir.
¿Para qué escenarios son adecuados YAML y JSON?
YAML es más adecuado para configuraciones legibles por humanos: manifiestos de recursos de Kubernetes, Docker Compose, GitHub Actions, Ansible Playbooks, pipelines CI/CD. JSON es mejor para el intercambio de datos entre máquinas: respuestas de APIs REST, comunicación entre microservicios, transferencia de datos frontend-backend. Regla simple: usa YAML para escribir configuraciones y JSON para transmitir datos. Esta herramienta también soporta la conversión inversa de YAML a JSON.
¿La indentación del YAML convertido debe ser de 2 o 4 espacios?
YAML recomienda oficialmente 2 espacios de indentación (coincidiendo con el estilo de Python), el estilo por defecto en Kubernetes, Docker Compose y GitHub Actions. Sin embargo, algunos proyectos (como ciertos Playbooks antiguos de Ansible o el estilo interno de Google) usan 4 espacios. Esta herramienta permite alternar libremente entre 2/4 espacios desde el menú desplegable en la parte superior derecha del área de salida, sin necesidad de reconvertir.
¿El YAML generado se puede usar directamente en Kubernetes?
Sí. Esta herramienta sigue estrictamente la especificación oficial YAML 1.2, y el YAML producido cumple con los requisitos del parser YAML de Kubernetes (kubectl apply). El YAML generado puede guardarse directamente como deployment.yaml, service.yaml, etc. y aplicarse con kubectl apply -f. Ojo: YAML es muy sensible a la indentación, no introduzcas espacios extra ni uses tabuladores al copiar.
¿Soporta YAML multi-documento (separado por ---)?
La versión actual se centra en la conversión de un único documento JSON → YAML. Si tu JSON es un array de objetos independientes, la salida los listará como elementos. Para YAML multi-documento (cada objeto precedido por ---), añade manualmente el separador --- delante de cada objeto tras la conversión, o utiliza nuestra herramienta de formato YAML para un procesamiento posterior.
¿Se corrompen los caracteres chinos o especiales del JSON?
No. Esta herramienta soporta totalmente UTF-8, incluyendo chino, japonés, coreano, emojis y todo tipo de caracteres Unicode. Si necesitas convertir el chino a su forma de escape \uXXXX (por ejemplo para incrustar en literales de cadena de JavaScript), usa el botón "Chino a Unicode" en la parte inferior; para revertirlo, usa "Unicode a Chino".
¿Cómo se manejan las comillas dobles y saltos de línea en cadenas JSON?
YAML admite varias formas de escribir cadenas: ① sin comillas (para cadenas simples sin caracteres especiales); ② entre comillas dobles (soporta escapes como \n, \t); ③ entre comillas simples (literal, sin escapes); ④ estilo bloque con | (conserva saltos de línea); ⑤ estilo plegado con > (saltos de línea se convierten en espacios). Esta herramienta usa comillas dobles por defecto; si la cadena JSON tiene saltos de línea, YAML los escapará automáticamente como \n. En la parte inferior encontrarás los botones de "escape/desescape" para casos especiales.
¿Todos los valores del JSON se convierten a cadena en YAML?
Por defecto la herramienta identifica y conserva el tipo original del JSON: los números se mantienen como números YAML (sin comillas), los booleanos se convierten en true/false y null pasa a null o ~. Si necesitas que todos los valores sean cadenas (por ejemplo para ciertos sistemas de configuración que lo exigen), puedes añadir comillas manualmente tras la conversión, o envolver todos los valores como cadenas en el JSON antes de convertir.
¿Se suben los archivos de configuración al convertir en el navegador?
No. Todo el análisis de JSON, la generación de YAML, el escape de cadenas, la conversión Unicode y la reparación de JSON se ejecutan localmente en el motor de JavaScript de tu navegador, sin enviarse a ningún servidor por la red. Funciona incluso sin conexión. Puedes convertir con total tranquilidad JSON con contraseñas de bases de datos, claves de API o Secrets de Kubernetes.
Solución de problemas
¿Error "Unexpected token" en JSON, qué hago?
Esto indica un error de sintaxis JSON. Causas habituales: ①coma extra al final (trailing comma), por ejemplo {"a":1,}; ②comillas simples en lugar de dobles, como {'a':1}; ③claves sin comillas dobles, como {a:1}; ④comentarios // o /* */. En la parte inferior encontrarás el botón "Reparar JSON", que intentará añadir automáticamente comillas dobles, eliminar comas sobrantes o quitar comentarios. Tras la reparación, vuelve a convertir.
¿kubectl apply falla con "yaml: invalid character"?
Normalmente es un error de indentación. YAML exige estrictamente indentación con espacios; mezclar tabuladores provoca fallos de análisis. Comprueba: ①que toda la indentación sean espacios (no tabuladores); ②que el número de espacios por nivel sea consistente (2 o 4); ③que la indentación se alinee con la jerarquía anidada. La salida de esta herramienta usa solo espacios, sin tabuladores, pero si copias y pegas manualmente podrías introducir uno.
Los saltos de línea en cadenas YAML se convierten en \n, ¿qué hago?
Por defecto, los saltos de línea (\n) en cadenas JSON se escapan como \n al convertirse a YAML. Si necesitas conservar saltos de línea reales (por ejemplo en el command multilínea de Docker Compose o en cadenas de configuración multilínea), cambia manualmente al estilo bloque de YAML con |, por ejemplo: description: |\n Primera línea\n Segunda línea. También puedes usar el botón "Desescapar" de esta herramienta para convertir los \n del JSON a saltos reales antes de convertir.
Los valores null del YAML aparecen como ~, ¿por qué?
YAML usa ~ o null para representar el valor nulo, ambos equivalentes. Si tu herramienta no reconoce ~, puedes reemplazarlo manualmente por null, o activar la opción correspondiente para que todos los null se emitan explícitamente como null en vez de ~. Además, recuerda que en YAML 1.1 NO/On/Off se interpretaban como booleanos false (problema de Norway); YAML 1.2 ya lo corrige y la salida de esta herramienta cumple con 1.2.
Los caracteres chinos aparecen como escapes \uXXXX en YAML, ¿por qué?
Por defecto la herramienta emite chino en UTF-8 nativo (sin escapar). Si ves escapes \uXXXX puede deberse a: ①el JSON de entrada ya contenía escapes Unicode; ②se pulsó el botón "Chino a Unicode" en la parte inferior. Puedes usar el botón "Unicode a Chino" para revertirlo, o reemplazar los \uXXXX por caracteres chinos reales en el JSON de origen.
El navegador se atasca al convertir archivos grandes, ¿qué hago?
La herramienta incluye optimización de conversión en tiempo real (debounce de 500ms), pero archivos muy grandes (>1MB, cientos de miles de líneas) pueden seguir causando presión. Recomendaciones: ①usa primero el formateador JSON para verificar que el JSON es válido; ②confirma que es un único JSON grande y no varios JSON concatenados; ③para archivos muy grandes (10MB+) se recomienda usar herramientas de línea de comandos como yq o kubectl convert; ④si el navegador se bloquea, cierra pestañas innecesarias para liberar memoria y vuelve a intentarlo.
Glosario
- YAML
- YAML Ain't Markup Language (acrónimo recursivo), un formato de serialización de datos legible para humanos, lenguaje de configuración estándar de facto en herramientas DevOps como Kubernetes, Docker Compose y Ansible.
- Indentación (Indentation)
- YAML usa la indentación (obligatoriamente espacios, nunca tabuladores) para representar la jerarquía; un error de indentación provoca fallos de análisis o cambios de significado, el escollo más común de YAML.
- Secuencia (Sequence)
- Representación de arrays en YAML, con - item por cada elemento, equivalente al array de JSON.
- Mapeo (Mapping)
- Representación de objetos en YAML, con clave: valor por cada par, equivalente al objeto de JSON.
- Estilo bloque (Block Scalar |)
- Escritura de cadenas multilínea en YAML, identificada con |; conserva todos los saltos de línea e indentación, equivalente a heredoc.
- Estilo plegado (Folded Scalar >)
- Escritura de cadenas multilínea en YAML, identificada con >; un salto de línea se convierte en espacio y solo dos saltos seguidos conservan la separación de párrafo.
- Anclas y referencias (Anchor & Reference)
- YAML define anclas con &nombre y las referencia con *nombre para evitar duplicaciones; muy usado cuando un mismo Secret de K8s se referencia en varios lugares.
- YAML 1.2
- Especificación de la versión estable actual de YAML (publicada en 2009, revisión menor en 2021). Esta herramienta la sigue estrictamente (yaml.org/spec/1.2.2).
- YAML multi-documento (Multi-document)
- YAML admite varios documentos en un mismo archivo, separados por ---; en Kubernetes un solo yaml puede contener múltiples recursos como Deployment+Service+ConfigMap.
- YAML para Kubernetes
- Formato YAML de los manifiestos de recursos de Kubernetes; debe incluir los campos obligatorios apiVersion, kind, metadata y spec. Es el estándar de facto para despliegues en K8s.
- Problema de Norway (YAML 1.1)
- La especificación YAML 1.1 interpretaba NO/On/Off como booleanos false, provocando errores al analizar nombres de países. YAML 1.2 ya lo corrige y la salida de esta herramienta cumple con 1.2.
- Docker Compose
- Archivo de configuración en YAML de la herramienta de orquestación multi-contenedor de Docker, que define secciones como services, networks y volumes. Es el estándar de facto para despliegues en contenedores.
Tabla de correspondencia entre tipos JSON y sintaxis YAML
Esta herramienta convierte los tipos JSON a tipos YAML siguiendo estas reglas:
| Tipo JSON | Sintaxis YAML | Nota |
|---|---|---|
| string | name: "Alice" | Por defecto YAML no usa comillas; se requieren comillas dobles si hay caracteres especiales |
| integer | port: 8080 | YAML identifica automáticamente el tipo número, sin comillas |
| float | ratio: 3.14 | Los flotantes se identifican igual que los enteros, sin comillas |
| boolean | enabled: true | YAML solo admite true/false en minúscula; YAML 1.1 también acepta yes/no |
| null | value: null o value: ~ | YAML usa null o la tilde ~ para representar el valor nulo |
| array | - item1\n- item2 | YAML usa - al inicio de cada línea para los elementos |
| object | key:\n sub: value | Los objetos usan clave: valor y el anidamiento se representa con indentación |
| array de objetos | - name: a\n- name: b | Los arrays de objetos usan - seguido de pares clave-valor |
Tabla comparativa de estilos de cadenas en YAML
YAML admite 6 formas de escribir cadenas, elige según necesites:
| Estilo | Ejemplo de sintaxis | Escenario de uso |
|---|---|---|
Sin comillas | name: Alice | Cadenas simples, el más usado |
Comillas dobles | name: "Alice" | Con caracteres especiales, soporta escapes como \n |
Comillas simples | name: 'Alice' | Cadenas literales, sin escapes |
Estilo bloque | bio: |\n line1\n line2 | Conserva todos los saltos de línea e indentación (heredoc) |
Estilo plegado | bio: >\n line1\n line2 | Un salto de línea se convierte en espacio, dos saltos crean párrafo |
Etiqueta explícita | value: !!str 123 | Fuerza el tipo, anulando la inferencia por defecto |
Ejemplos comparativos de JSON a YAML
Salida YAML correspondiente a estructuras JSON complejas:
| Estructura | Ejemplo |
|---|---|
| JSON de entrada | {"name": "app", "port": 8080} |
| YAML de salida | name: app
port: 8080 |
| JSON de entrada | {"server": {"host": "0.0.0.0", "port": 443}} |
| YAML de salida | server:
host: 0.0.0.0
port: 443 |
| JSON de entrada | {"hosts": [{"ip": "10.0.0.1"}, {"ip": "10.0.0.2"}]} |
| YAML de salida | hosts:
- ip: 10.0.0.1
- ip: 10.0.0.2 |
| JSON de entrada | {"spec": {"replicas": 3, "image": "nginx:1.25"}} |
| YAML de salida | spec:
replicas: 3
image: nginx:1.25 |
Privacy & Security
Todas las operaciones de esta herramienta (análisis de JSON, generación de YAML, escape de cadenas, conversión Unicode, reparación inteligente de JSON y lectura de archivos) se ejecutan en el motor de JavaScript local del navegador. Tu contenido JSON y el YAML generado nunca se envían a ningún servidor por la red, ni se registran ni se analizan. Puedes convertir con total tranquilidad JSON con contraseñas de bases de datos, claves de API o Secrets de Kubernetes. El historial local solo se guarda en el localStorage de tu propio navegador; al cerrar el navegador o borrar la caché se elimina.
Authoritative References
- yaml.orgEspecificación oficial YAML 1.2
- yaml.orgFAQ oficial de YAML
- WikipediaYAML - Wikipedia
- KubernetesTutorial oficial de YAML en Kubernetes
- DockerDocumentación oficial de Docker Compose
- Compresión JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- JSON Flatten
- Formateo JSON
- Generador de JSON
- Consulta JSONPath
- Fusionar JSON
- Reparar JSON
- Validador JSON Schema
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON to Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- JSON a XML
- YAML a JSON
- JSON a YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP