Convertidor JSON ↔ YAML · Encoding
Convierte JSON ↔ YAML — y ve exactamente qué cambia.
Todos los convertidores pasan YAML a JSON. Este además te dice qué ha costado: los comentarios que descartó, las anclas que expandió, la fecha que reescribió, el entero que redondeó. Parser YAML 1.2 real, íntegramente en tu navegador.
Se ejecuta en tu navegador: nada de lo que pegas sale de esta página. Cómo lo demostramos
Playground del convertidor JSON ↔ YAML
Every JSON file is already valid YAML — YAML 1.2 is a superset of JSON. The reverse is not true, which is why the direction is yours to pick.
Off by default: the order you wrote is kept, except for integer-like keys.
Results update as you type — press Enter to run now.
Press Esc to release keyboard focus from the editor; ⌘/Ctrl + Enter converts and leaves the editor. Nothing you paste is uploaded.
An anchor (&name) marks a value so an alias (*name) can reuse it. JSON has neither, so every alias is written out as a full copy.
Paste JSON or YAML above — or tap an example — to see the converted document here, plus every comment, anchor, timestamp and out-of-range number the conversion costs you.
La brecha
Convertidores silenciosos y respuestas que dependen del parser.
La docena de convertidores financiados con publicidad que encabezan los resultados de búsqueda hacen todos lo mismo: imprimen el otro formato y no dicen nada. Tus comentarios han desaparecido. Tus anclas se expandieron en copias. Esa fecha sin comillas es ahora una cadena con una zona horaria que nunca escribiste. Al identificador de 19 dígitos le faltan los dos últimos. Nada en la página menciona nada de esto, así que la primera vez que te enteras es en la revisión. O en producción.
Pregúntale a un asistente de IA y tendrás un segundo problema: la respuesta depende de qué versión de YAML aprendiera el modelo. verify: no es la cadena "no" en YAML 1.2 y el booleano false en YAML 1.1, y ambas respuestas se afirman con la misma seguridad. 0777 es 777 en una y 511 en la otra, que para un modo de archivo es la diferencia entre un despliegue roto y uno que funciona.
Esta herramienta responde con datos verificables en lugar de conjeturas: un parser YAML 1.2 real se ejecuta en tu pestaña, la salida es determinista y cada paso con pérdida se nombra junto con la línea o la ruta en la que ocurrió. La tabla de referencia de más abajo fija los valores en los que ambas versiones de YAML discrepan, para que puedas comprobar una afirmación en segundos.
¿Trabajas en un pipeline? El validador de GitHub Actions y el validador de GitLab CI revisan el YAML en sí.
El pipeline
Cómo funciona.
Cuatro pasos deterministas se ejecutan mientras escribes, todos dentro de tu pestaña, y cada uno con pérdida se informa a sí mismo.
-
Parsear con un parser real.
js-yaml 4 sobre el esquema core de YAML 1.2, o JSON.parse; nunca una expresión regular. Si no parsea, obtienes la línea y la columna, no «no válido».
-
Normalizar, y registrarlo.
Un solo recorrido convierte las fechas en cadenas ISO-8601, !!binary en base64 y ±Infinity/NaN en null, y cada conversión emite un diagnóstico con la ruta en la que ocurrió.
-
Emitir de forma determinista.
Sin plegado de líneas y sin anclas generadas: la misma entrada produce siempre los mismos bytes, y la salida se vuelve a leer exactamente como se ve.
-
Informar de cada pérdida.
Comentarios, anclas, claves de fusión, documentos extra, claves numéricas reordenadas y enteros redondeados se listan junto a la salida, para que decidas si la conversión era aceptable.
Con un ejemplo
Cuatro pérdidas en seis líneas.
Un comentario, un ancla, una clave de fusión y una fecha sin comillas: el YAML de todos los días que ningún convertidor puede llevar intacto al otro lado.
Entrada
YAML corriente: un comentario, un ancla, una clave de fusión, una fecha desnuda.
# valores por defecto del rollout, compartidos por ambos jobs
defaults: &defaults
retries: 2
verify: no # cadena en YAML 1.2, false en YAML 1.1
release:
<<: *defaults
date: 2024-01-15 Salida, con el recibo
Cuatro pérdidas informadas: el comentario ya no está, *defaults se copió, <<: se aplanó y la fecha pasó a ser una cadena ISO-8601. no siguió siendo una cadena, y aparece marcado porque PyYAML lo leería como false.
{
"defaults": { "retries": 2, "verify": "no" },
"release": {
"retries": 2,
"verify": "no",
"date": "2024-01-15T00:00:00.000Z"
}
} Referencia
Dónde discrepan YAML 1.2 y YAML 1.1.
El mismo escalar sin comillas, leído por esta herramienta (js-yaml 4, esquema core de YAML 1.2) y por un parser YAML 1.1 como PyYAML. Cuando una herramienta y un compañero no se ponen de acuerdo sobre un valor, la respuesta está casi siempre en esta tabla.
| Entrada sin comillas | YAML 1.2 — esta herramienta | YAML 1.1 — PyYAML |
|---|---|---|
| no | "no" (cadena) | false (booleano) El problema de Noruega. Igual con yes / on / off / y / n. |
| true | true (booleano) | true (booleano) Las dos versiones solo coinciden en true y false. |
| ~ | null | null null, Null, NULL, ~ y un valor vacío son null en ambas. |
| 2024-01-15 | 2024-01-15T00:00:00.000Z | 2024-01-15T00:00:00.000Z Ambas resuelven una fecha sin comillas como marca de tiempo; JSON no tiene tipo fecha, así que se escribe como cadena ISO-8601. |
| 0777 | 777 (decimal) | 511 (octal) La discrepancia más peligrosa de todas: los modos de archivo cambian de significado en silencio. Escribe 0o777. |
| 0o777 | 511 | "0o777" (cadena) YAML 1.1 no entiende en absoluto la forma octal explícita de YAML 1.2. |
| 1:30 | "1:30" (cadena) | 90 (sexagesimal) YAML 1.1 leía los números separados por dos puntos en base 60. YAML 1.2 lo eliminó. |
| .inf | Infinity | Infinity JSON no tiene infinito, así que pasa a ser null, con una advertencia. |
| 9007199254740993 | 9007199254740992 | 9007199254740993 No es una discrepancia de YAML sino de JavaScript: más allá de 2^53 − 1 el valor exacto se ha perdido. |
Entrecomillar elimina todas las discrepancias de esta tabla. Cuando un escalar tiene que seguir siendo una cadena en los dos mundos, entrecomíllalo, y cuando esta herramienta emite YAML lo entrecomilla por ti.
Siguiente paso
Ahora comprueba que el YAML en sí es válido.
Convertir demuestra que un documento parsea; no demuestra que el pipeline lo vaya a aceptar. Pasa el YAML de tu workflow por el validador de GitHub Actions o el validador de GitLab CI para detectar los problemas de esquema y de seguridad que un convertidor no puede ver.
YAML → JSON · 2 docs · 31 keys · 1 warning · 3 notes
note: comments were dropped
note: 1 alias expanded into a copy
note: "no" stayed a string (YAML 1.1 reads false)
warning: 9007199254740993 → 9007199254740992 FAQ
Tus preguntas, respondidas.
Toca una pregunta para desplegar la respuesta.
¿Qué hace el convertidor JSON ↔ YAML?
Convierte JSON a YAML o YAML a JSON en tu navegador y, después, te dice qué ha costado la conversión. Los comentarios, las anclas y los alias, las claves de fusión, las fechas, los flujos de varios documentos y los enteros demasiado grandes para que JavaScript los represente con exactitud no sobreviven al viaje: cada uno de ellos aparece como una advertencia o una nota con nombre propio junto a la salida, en lugar de desaparecer en silencio.
¿Qué versión de YAML utiliza?
YAML 1.2, mediante js-yaml 4 y su esquema por defecto (core), el mismo lector que usa la mayoría del tooling moderno de JavaScript. Importa porque YAML 1.2 eliminó las grafías booleanas de YAML 1.1: aquí no, yes, on y off son cadenas normales, y solo true y false son booleanos. PyYAML, Psych de Ruby y el tooling antiguo de Kubernetes siguen aún YAML 1.1, así que la tabla de referencia de esta página fija los valores en los que ambas versiones discrepan.
¿Qué es el «problema de Noruega»?
Un parser de YAML 1.1 lee el escalar sin comillas NO como el booleano false, de modo que una lista de países que contiene el código ISO de Noruega se convierte en una lista que contiene false. La misma trampa afecta a ON, OFF, YES, Y y N. Este convertidor sigue YAML 1.2, así que esos valores siguen siendo cadenas, y marca cada uno que encuentra para que sepas que una herramienta YAML 1.1 más adelante en la cadena opinaría lo contrario. En el sentido inverso los entrecomilla al escribir («NO» pasa a ser 'NO'), y eso es precisamente lo que mantiene el archivo seguro para PyYAML.
¿Mi documento sale alguna vez de mi navegador?
No. El parseo, la conversión y el informe se ejecutan al 100 % en el cliente, dentro de tu pestaña: no hay servidor, ni cuenta, ni registro de actividad. Puedes pegar manifiestos de producción, configuraciones de CI y archivos con nombres de host internos o secretos sin ningún riesgo.
¿Qué pasa con los comentarios de YAML?
Se pierden, y la herramienta lo dice. JSON no tiene sintaxis de comentarios, y conservarlos en un viaje de ida y vuelta exigiría un árbol sintáctico consciente de los comentarios en lugar de un parser de valores: eso es un no-objetivo deliberado aquí. Si necesitas que los comentarios sobrevivan, edita el YAML directamente en lugar de pasarlo por JSON.
¿Cómo se convierten las anclas y los alias de YAML?
Se expanden en su sitio. Un ancla (&defaults) marca un valor; un alias (*defaults) lo reutiliza. JSON no tiene ninguno de los dos, así que cada alias se convierte en una copia completa del valor anclado: el documento significa lo mismo, pero es más largo y la reutilización ha desaparecido. Las claves de fusión (<<:) se expanden igual, escribiendo por completo las claves heredadas. Un alias recursivo, donde un nodo se contiene a sí mismo, no puede representarse en JSON en absoluto y se informa como error en lugar de bloquear la página.
¿Por qué ha cambiado mi número grande?
JavaScript guarda los números como dobles IEEE-754, así que los enteros por encima de 2^53 − 1 (9007199254740991) no pueden representarse con exactitud. 9007199254740993 pasa a ser 9007199254740992 en el momento en que se parsea: con esta herramienta, con JSON.parse en tu propio código y con cualquier otro convertidor de navegador. La diferencia es que este te avisa y cita los dígitos originales. Si el valor es un identificador y no una cantidad, mantenlo como cadena entrecomillada.
¿Cómo convierto un manifiesto YAML de Kubernetes a JSON para kubectl patch?
Pega el manifiesto, deja el sentido en YAML → JSON y copia la salida. kubectl patch --type=merge -p espera un documento JSON, y un manifiesto de varios documentos (varios recursos separados por ---) se convierte aquí en un array JSON, que kubectl no acepta como parche: sepáralos y convierte un recurso a la vez. Las cantidades como 256Mi y 500m siguen siendo cadenas en ambos formatos, que es lo que Kubernetes espera.
¿Puedo convertir una plantilla de CloudFormation?
No mientras use las etiquetas abreviadas. !Ref, !GetAtt y !Sub son etiquetas YAML propias de CloudFormation, no parte del esquema estándar, así que un parser conforme al estándar las rechaza; esta herramienta indica exactamente en qué etiqueta se ha atascado y dónde. Reescríbelas en su forma larga (Ref: BucketName en lugar de !Ref BucketName) y la plantilla se convierte.
¿El orden de la salida coincide con el de mi entrada?
Sí, con una excepción inevitable. El orden de las claves se conserva por defecto, y «Sort keys» ordena todos los niveles cuando quieres un diff estable. La excepción son las claves con forma de entero: los objetos de JavaScript siempre enumeran claves como «1» y «2» primero, en orden numérico ascendente, antes que cualquier otra clave, sea cual sea el orden en que se escribieron y estuvieran entrecomilladas o no. La herramienta avisa cuando tu documento las contiene.
More free, private DevOps tools.
El convertidor JSON ↔ YAML es una de las herramientas de OpsCanopy: una copa cada vez más frondosa de validadores, convertidores y testers de navegador que nunca tocan un servidor.
Más en Codificación
39 herramientas gratuitas, todas pueden funcionar sin conexión — opscanopy.com funciona sin registro y sin subir nada.
Relacionadas: el validador de GitHub Actions y el validador de GitLab CI para revisar el YAML de los pipelines, el convertidor Docker Run a Compose para pasar de un comando a YAML, el probador de rutas de Alertmanager para recorrer un árbol de enrutado, y el codificador / decodificador Base64 cuando la carga viene codificada y no estructurada. O explora el directorio de herramientas completo.
Se ofrece tal cual, por comodidad; confirma siempre la configuración crítica contra la herramienta que la vaya a consumir. OpsCanopy es gratis y abierto.