§

Pega el JSON o YAML que quieras convertir.

Modo
Sangría
Opciones
§

Salida

yaml

Saltar entre JSON y YAML es trabajo diario para los equipos de plataforma cloud-native hispanohablantes. Empresas como Glovo, Cabify o Mercado Libre escriben manifiestos de Kubernetes en YAML que kubectl y Helm consumen internamente como JSON, mientras que la Cloud Garden de BBVA y los despliegues K8s de Telefónica Tech siguen la misma rutina. Las pipelines de GitHub Actions en CI/CD, las especificaciones OpenAPI 3 publicadas en el portal datos.gob.es y los charts de Helm que las administraciones autonómicas auditan antes de subirlos a producción pivotan continuamente entre los dos formatos. La comunidad de meetups Kubernetes Madrid y Barcelona usa este recorrido a diario para revisar configuraciones sin enviar nada al servidor.

¿Qué es la conversión JSON ↔ YAML?

JSON (JavaScript Object Notation, RFC 8259) es un formato de texto estricto delimitado por llaves para datos estructurados; YAML (YAML Ain't Markup Language, versión 1.2) es un superconjunto de JSON que utiliza sangría, saltos de línea y sintaxis legible para el mismo modelo de valores. Convertir entre ambos te permite pivotar la misma configuración entre una forma amigable para máquinas (JSON para APIs, validación de esquemas, transformaciones programáticas) y una forma amigable para humanos (YAML para revisiones de código, manifiestos de Kubernetes, flujos de GitHub Actions) sin reescribir una sola clave.

¿Cómo funciona la conversión JSON ↔ YAML?

Cada conversión se ejecuta localmente en tu navegador usando la librería js-yaml incluida (MIT, versión 4.1.0). Los pasos principales son:

  1. El selector de modo (Detección automática / JSON → YAML / YAML → JSON) decide qué pipeline se ejecuta. En modo Detección automática, el primer carácter no en blanco de la entrada elige la dirección — { o [ significa JSON; cualquier otra cosa significa YAML.
  2. JSON → YAML: JSON.parse valida la entrada y produce un valor JavaScript; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) escribe la forma YAML 1.2. Con Multi-documento activado, un array de entrada se vuelca un elemento por documento y se une con separadores ---.
  3. YAML → JSON: jsyaml.loadAll analiza todos los documentos de la entrada (gestionando los separadores --- automáticamente) y los pone en un array; las entradas de un solo documento se desempaquetan para que la salida JSON sea el documento en sí, no un array de un elemento.
  4. Sangría (2 o 4 espacios) e Imprimir bonito son configurables. Con Imprimir bonito desactivado se emite JSON minificado mediante JSON.stringify(value) sin espacios en blanco.
  5. La salida se escribe en el área de texto de solo lectura. En fallos de análisis YAML, el mensaje de error incluye la línea y columna (1-indexadas) reportadas por e.mark de js-yaml para que puedas saltar directamente al bug.

¿Por qué convertir JSON y YAML con esta herramienta?

  • Privacidad: cada pasada de análisis, transformación y emisión ocurre en tu navegador. Los datos — incluidos secretos de Kubernetes, JWT firmados y configuraciones propietarias — nunca llegan a nuestros servidores.
  • YAML multi-documento: jsyaml.loadAll reconoce los separadores --- y devuelve un array de documentos, que el convertidor desempaqueta para casos de un solo documento o conserva como array JSON para casos multi-documento.
  • Anchors y aliases resueltos: el mecanismo &anchor / *alias de YAML lo maneja el esquema por defecto de js-yaml. Un valor definido una vez y referenciado dos veces se mantiene en la ida y vuelta a un objeto JSON donde todas las referencias guardan valores iguales.
  • Sin CDN, sin telemetría: la librería js-yaml.min.js se sirve desde el mismo origen que la página, así la herramienta funciona sin conexión, detrás de proxies corporativos y en entornos aislados.

¿Cuáles son las aplicaciones comunes de la conversión JSON ↔ YAML?

Pivotar entre JSON y YAML aparece en DevOps, ingeniería de plataforma y tooling de APIs:

  • Manifiestos de Kubernetes: convertir un YAML Deployment, ConfigMap o HelmRelease a JSON para que un validador interno de políticas (Joi, Ajv, OPA Rego) lo pueda linter programáticamente, y luego volverlo a YAML para el apply en el clúster.
  • Flujos CI/CD: dar la vuelta a un workflow.yml de GitHub Actions pasándolo por JSON para que un generador de código reescriba la matriz o las dependencias entre jobs, y emitir el YAML limpio para el PR.
  • Especificaciones OpenAPI: pegar un openapi.json del backend autogenerado y convertirlo a openapi.yaml para la referencia editada por humanos que se sube al repositorio.

¿Cómo se ve un ejemplo de ida y vuelta JSON ↔ YAML?

Pegar {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} y pulsar CONVERTIR en modo JSON → YAML produce ocho líneas de YAML indentado con apiVersion: apps/v1 en la primera línea. Si reintroducimos ese YAML en modo YAML → JSON con Imprimir bonito activado, recuperamos el objeto original byte a byte tras un JSON.stringify(value, null, 2) estable, con el orden de las claves preservado porque el esquema por defecto de js-yaml respeta el orden de inserción en ambas direcciones.

¿Este convertidor JSON ↔ YAML se ejecuta íntegramente en mi navegador?

Sí. Cada pasada de análisis, transformación y emisión se ejecuta localmente como JavaScript dentro de tu pestaña del navegador. La librería js-yaml incluida se sirve desde el mismo origen que la página — sin CDN, sin fetch, sin XMLHttpRequest, sin navigator.sendBeacon sobre la entrada. La herramienta también funciona sin conexión una vez que la página se ha cargado, porque es un bundle estático HTML/CSS/JS con la librería vendor copiada al lado. Los secretos de Kubernetes, los payloads JWT, los YAML firmados de CloudFormation y las configuraciones propietarias se quedan en tu dispositivo.

¿Cómo gestiona el convertidor el YAML multi-documento?

YAML admite varios documentos en un mismo flujo separados por líneas que solo contienen ---. En YAML → JSON el convertidor llama a jsyaml.loadAll, que devuelve cada documento como un valor JavaScript. Si se encuentra exactamente un documento, la salida JSON es directamente ese documento; si se encuentran dos o más, la salida JSON es un array. En JSON → YAML, cuando la entrada es un array JSON Y el interruptor Multi-documento está activado, cada elemento del array se emite como su propio documento con separadores --- entre ellos — útil para generar un bundle compatible con kubectl apply a partir de un array JSON de recursos.

¿Se admiten los anchors y aliases de YAML?

Sí — las definiciones &anchor y las referencias *alias las resuelve el esquema por defecto de js-yaml durante el paso de carga. Una entrada YAML como defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d se analiza a un objeto JSON donde job_a y job_b contienen ambos retries: 3, timeout: 30. La clave de fusión << (una extensión YAML 1.1 que js-yaml sigue respetando) también se soporta en el esquema por defecto.

¿Se preservan los comentarios YAML al convertir a JSON y volver?

No — js-yaml elimina los comentarios durante el paso de análisis, así que una ida y vuelta YAML → JSON → YAML perderá toda línea prefijada con #. Es una limitación conocida del modelo load/dump; si la preservación de comentarios es crítica, utiliza una librería que tenga en cuenta los comentarios, como el paquete npm yaml (que expone una API CST + AST diseñada para preservar trivia), en lugar de js-yaml. Para la mayoría de los flujos de conversión de configuración el compromiso es aceptable: el YAML resultante conserva todas las claves, valores, anchors y aliases, solo que sin los comentarios escritos por humanos.

¿Qué ocurre con las etiquetas YAML personalizadas?

El convertidor utiliza el DEFAULT_SCHEMA de js-yaml, que entiende !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary y !!timestamp — toda etiqueta del core YAML 1.2 y de los esquemas JSON. Las etiquetas personalizadas o específicas de aplicación (p. ej. !Ref en CloudFormation, !vault en Ansible) no se reconocen y aparecen como un error claro citando la etiqueta no soportada. Para CloudFormation en concreto, usa el flujo aws cloudformation package + --output-template-file para expandir las etiquetas personalizadas antes de pegar en este convertidor.

Este convertidor JSON ↔ YAML viene con js-yaml@4.1.0 incluido desde el mismo origen, soporta flujos multi-documento y anchors/aliases de fábrica, e informa de los errores de análisis YAML con línea y columna para que puedas corregir la fuente. Sin subida, sin CDN, sin telemetría — cada byte se queda en tu navegador.