Convierte YAML a JSON con las anclas y los alias resueltos. Un archivo con varios documentos se convierte en un array JSON.
¿Qué es YAML to JSON?
YAML to JSON es una herramienta en línea gratuita que convierte YAML en JSON en tu navegador. Lee YAML según las reglas de YAML 1.2 Core, convierte las anclas y los alias en valores simples y escribe un archivo con varios documentos como una lista JSON.
O convierte todos los valores, o se niega y te explica por qué, por ejemplo ante un número que JSON no puede escribir.
Qué admite
- YAML leído según las reglas de YAML 1.2 Core, como un documento o varios separados por ---: texto simple, entre comillas y de varias líneas, números, true, false, null, listas, mapas, comentarios, anclas y alias.
- Las claves deben ser texto. Se escriben en el orden en que aparecen, y los valores que son números, true, false y null conservan sus tipos JSON.
- Los números conservan sus dígitos cuando ya son válidos en JSON: 12345678901234567890, 1e3 y 1.50 salen tal cual. Los números hexadecimales y octales y los números con signo más o ceros a la izquierda (0x1F, 0o17, +12, 007) se escriben como números decimales simples, y .5 pasa a ser 0.5.
- Las anclas y los alias se resuelven: cada alias se convierte en una copia completa del valor de su ancla, y un ancla vale para los alias que la siguen en su propio documento.
- Varios documentos pasan a ser una lista JSON con un elemento por documento, y un documento vacío entre dos líneas --- pasa a ser null. Un único documento se escribe como él mismo.
- Los bloques de texto (| y >), los escapes entre comillas como \t y el texto simple de varias líneas pasan a ser texto JSON normal, con los saltos de línea que define YAML.
- La clave de fusión << se lee como una clave normal, con un aviso, porque YAML 1.2 Core no tiene claves de fusión. yes, no, on y off son texto simple.
Conviene saber
- Se rechazan en lugar de cambiarse: el infinito y NaN (.inf, -.inf, .nan), un alias que apunta a un valor que lo contiene (un ciclo), una clave que no es texto (un número, true, false, null, o una lista o un mapa usados como clave), una etiqueta personalizada o ajena al Core y una directiva como %YAML.
- JSON no guarda comentarios, anclas ni marcadores de documento, y cada alias se convierte en una copia, así que el JSON puede quedar mucho mayor que el YAML. Un documento que supera el límite de tamaño se rechaza en lugar de recortarse.
- Los programas que siguen las reglas más antiguas de YAML 1.1 leen algunos valores de otra forma, por ejemplo yes y no como booleanos o 010 como un número octal. Esta herramienta sigue YAML 1.2, así que revisa esos valores si tu programa usa YAML 1.1.
- Una clave repetida en el mismo mapa, un alias sin ancla y un error de sintaxis se rechazan con la línea y la columna del problema.
- Un documento con solo comentarios no tiene nada que convertir, así que recibes un aviso que pide contenido.
¿Cómo se usa YAML to JSON?
- Pega o escribe tu YAML en el cuadro de entrada. No se ejecuta nada mientras escribes.
- Elige la sangría («2 espacios» o «4 espacios») y pulsa «Convertir».
- Lee el JSON junto a tu entrada. Si se rechaza la conversión, el mensaje explica el motivo e indica la línea y la columna.
- Pulsa «Copiar» para poner el JSON en el portapapeles, o «Descargar» para guardarlo como converted.json.
Ejemplos
Un mapa y una lista
Pega este YAML y pulsa «Convertir». Las claves pasan a ser nombres JSON, 8080 y false siguen siendo un número y un booleano, las líneas que empiezan por un guion pasan a ser una lista, y el comentario se deja fuera porque JSON no tiene comentarios.
name: demo
port: 8080
debug: false
# not kept in JSON
tags:
- api
- web
{
"name": "demo",
"port": 8080,
"debug": false,
"tags": [
"api",
"web"
]
}Un valor que JSON no admite
.inf es el infinito, un número en YAML, pero JSON no tiene forma de escribirlo, así que se rechaza la conversión en lugar de cambiar el valor. Lo mismo ocurre con -.inf y .nan. El mensaje indica la línea y la columna del valor.
limit: .inf
Este valor (.inf, -.inf o .nan) es un número que JSON no puede representar. JSON no tiene infinito ni NaN, así que se rechazó la conversión en lugar de cambiar tus datos. Sustitúyelo por un número finito o por un texto entre comillas.
Línea 1, columna 8
Anclas y alias
El alias *d se sustituye por una copia del valor que marca el ancla &d, así que prod recibe el mismo retries que defaults. JSON no tiene alias, así que cada uso pasa a ser una copia propia.
defaults: &d
retries: 3
prod: *d
{
"defaults": {
"retries": 3
},
"prod": {
"retries": 3
}
}Varios documentos
Una línea con --- empieza un documento nuevo. Dos documentos pasan a ser una lista JSON con un elemento para cada uno, mientras que un archivo con un único documento se escribe como ese documento, no como una lista de uno.
---
name: web
---
name: api
[
{
"name": "web"
},
{
"name": "api"
}
]Palabras y números que parecen otra cosa
La herramienta lee YAML 1.2 Core, donde yes es texto simple y sigue siendo «yes». 0x1F es un número hexadecimal, escrito como 31, y 007 es el número 7. Un entero largo, como 12345678901234567890, conserva todos los dígitos.
enabled: yes
port: 0x1F
zip: 007
id: 12345678901234567890
{
"enabled": "yes",
"port": 31,
"zip": 7,
"id": 12345678901234567890
}Límites y privacidad
Límites de tamaño
- Entrada: hasta 2.000.000 bytes de texto en UTF-8 (unos 2 MB). Las letras acentuadas y los emojis ocupan más de un byte cada uno. Una entrada mayor se rechaza.
- Resultado: también hasta 2.000.000 bytes. Si el resultado completo fuera mayor, la herramienta muestra solo una vista previa incompleta de los primeros 100.000 bytes, y esa vista previa no se puede copiar ni descargar.
- Anidamiento: hasta 256 niveles de mapas y listas dentro de otros. Un YAML más profundo se rechaza porque supera lo que procesa la herramienta.
- Tiempo: una ejecución que tarda más que su límite de tiempo se detiene. Prueba con una entrada más pequeña.
¿Se envía mi texto a un servidor?
No. El texto que escribes o pegas, o abres desde un archivo local, se procesa localmente en tu navegador, en un Web Worker dedicado. Nunca se sube ni se envía al servidor (un archivo que abres se lee solo en tu navegador), y no se escribe en el almacenamiento, en cookies ni en la barra de direcciones.
«Copiar» pone el resultado en el portapapeles y «Descargar» lo guarda como archivo, pero solo cuando pulsas el botón. El archivo se crea en tu navegador, así que no se sube nada.
Para conocer todos los detalles, consulta la Política de privacidad
Herramientas y páginas relacionadas
Tu texto se queda en la página cuando cambias de herramienta en la misma pestaña, así que puedes probar el mismo texto en otra. Recargar o cerrar la pestaña lo termina.