YAML a JSON

Convierte YAML a JSON

Acerca de YAML a JSON

«YAML a JSON» analiza el YAML pegado con js-yaml, con las reglas de YAML 1.2 para los booleanos y null, y luego escribe JSON con una sangría de 2 espacios. Los mapeos se convierten en objetos y las listas de elementos con - en arrays; las anclas y los alias se expanden y se aplican las claves de fusión; varios documentos --- se convierten en un solo array JSON. Solo true y false son booleanos, así que yes y no se quedan como cadenas, y las fechas se quedan como texto. Los enteros conservan todos sus dígitos, pero los decimales se convierten en números JSON: un 1.10 sin comillas se escribe 1.1. No se admiten etiquetas personalizadas como !Ref. js-yaml hace todo esto dentro de la pestaña de tu navegador.

Ejemplo

Una configuración con un ancla, una clave de fusión, una versión sin comillas y otra entre comillas, y el JSON que devuelve la herramienta:

YAML

defaults: &base
  retries: 3
  debug: no
prod:
  <<: *base
  host: example.com
  version: 1.10
  tag: "1.10"
  build: 0012

JSON

{
  "defaults": {
    "retries": 3,
    "debug": "no"
  },
  "prod": {
    "retries": 3,
    "debug": "no",
    "host": "example.com",
    "version": 1.1,
    "tag": "1.10",
    "build": 12
  }
}

Cómo convertir YAML a JSON

  1. 1Pega YAML en «Entrada YAML».
  2. 2Haz clic en «Convertir».
  3. 3Lee el JSON en «Salida JSON», o el error, con su línea y su columna, si la sintaxis YAML es incorrecta.
  4. 4Haz clic en «Copiar» para el portapapeles, o en «Descargar» para obtener un archivo data.json.

Formatos y límites

Entrada
Texto YAML, uno o varios documentos
Salida
JSON (sangría de 2 espacios), guardado como data.json
No admitido
etiquetas personalizadas (!Ref, !Sub), !!binary, !!timestamp
Valores rechazados
.inf y .nan, que JSON no puede contener

Usos habituales

Leer manifiestos de Kubernetes en un script
Un archivo de manifiesto con un Deployment, un Service y un Ingress separados por --- se convierte en un solo array JSON con un elemento por recurso, listo para jq o para un script que solo lee JSON.
Ver lo que define realmente un archivo Compose
Al convertir un docker-compose.yml que reutiliza &defaults con <<: *defaults, cada servicio se escribe con las claves combinadas a la vista, así que el entorno, los puertos y la política de reinicio finales de cada servicio se leen directamente.
Pasar una configuración a una herramienta que solo acepta JSON
Una descripción OpenAPI o un pipeline de CI escritos en YAML se convierten en JSON para un validador, un cliente REST o una biblioteca que solo acepta JSON, con los enteros largos conservados dígito a dígito.

Qué herramienta elegir

  • JSON a YAML: la dirección contraria; pone entre comillas simples cadenas como yes, 123 o una fecha para que un lector de YAML las conserve como texto.
  • TOML a JSON: para archivos Cargo.toml y pyproject.toml; escribe las fechas TOML como cadenas ISO 8601 y convierte inf y nan en null con un aviso, mientras que esta herramienta rechaza .inf y .nan.
  • Formateador JSON: para ordenar las claves del resultado de la A a la Z, cambiar a 4 espacios o a una tabulación, o minificarlo, ya que esta herramienta siempre escribe JSON con una sangría de 2 espacios.

Dónde se procesa tu archivo

js-yaml se ejecuta en tu navegador para leer el YAML, y el contenido que pegas no se sube, así que los archivos de configuración con nombres de host internos se quedan contigo. Si se produce un error, su mensaje, sin los fragmentos entre comillas, se envía a nuestro registro de errores, junto con el nombre de la herramienta y el nombre y la versión de tu navegador.

Preguntas frecuentes

¿Se conserva una versión como 1.10?

No, salvo que esté entre comillas. Sin comillas, 1.10 es un número YAML y se escribe 1.1 en JSON; entre comillas sigue siendo la cadena 1.10, como en el ejemplo. Del mismo modo, 0012 se convierte en 12.

¿Se convierten yes y no en booleanos?

No. En YAML 1.2, que es lo que sigue esta herramienta, solo true y false son booleanos (True y TRUE también cuentan), así que yes, no, on y off se quedan como cadenas. Escribe true o false si necesitas booleanos.

¿Admite anclas y claves de fusión?

Sí. Un alias como *base copia el valor del ancla, y <<: *base combina sus claves en el mapeo, como lo usan los archivos de Docker Compose y GitLab CI; las claves escritas junto a la fusión tienen prioridad.

¿Puedo convertir una plantilla de CloudFormation?

No, si usa etiquetas cortas. !Ref, !Sub y otras etiquetas personalizadas detienen la conversión con un error de etiqueta desconocida, igual que !!binary y !!timestamp. Las plantillas escritas con la forma larga, como Ref: MyBucket, se convierten con normalidad.

¿Se conservan los comentarios YAML?

No. JSON no tiene comentarios, así que se elimina cada comentario #, tanto si está en su propia línea como después de un valor.

¿Qué pasa cuando una clave aparece dos veces en el mismo mapeo?

La conversión se detiene con un error de clave duplicada en el mapeo, con su línea y su columna, en lugar de conservar sin avisar uno de los dos valores. Elimina una de las dos claves o cámbiale el nombre, y vuelve a convertir.

¿Por qué recibo un error sobre caracteres de tabulación?

YAML no permite tabulaciones en la sangría. Sustitúyelas por espacios; el error indica la línea y la columna de la primera tabulación encontrada.

¿Cómo se convierten las cadenas multilínea | y >?

Un bloque | conserva sus saltos de línea y un bloque > une sus líneas con espacios; ambos se convierten en una sola cadena JSON que termina con un único salto de línea, como line one line two .

¿En qué se convierten un valor vacío y ~?

En null. Una clave sin nada después de sus dos puntos, ~ y null dan todos null en JSON, y un documento que solo contiene comentarios también se convierte en null.