¿Qué son estos formatos de datos?

Los programas almacenan e intercambian datos estructurados, como ajustes, registros y listas, en formatos de texto que representan los datos de distintas maneras. Un conversor resulta útil cuando un programa proporciona datos en un formato que otro no puede leer, o cuando un formato es más fácil de leer o editar para la tarea en cuestión.

Formato Cómo representa los datos Dónde se utiliza
JSON Objetos entre llaves, listas entre corchetes y texto entre comillas dobles API web y ajustes de aplicaciones
YAML Líneas clave: valor con sangría; los elementos de las listas empiezan por - Docker Compose, Kubernetes y archivos de canalizaciones de CI
XML Elementos entre etiquetas, que pueden tener atributos Documentos, fuentes RSS y servicios web SOAP
TOML Líneas clave = valor bajo encabezados [tabla] Archivos de configuración como Cargo.toml y pyproject.toml
TOON Líneas con sangría, con listas de registros en filas bajo sus campos Datos estructurados enviados a modelos de lenguaje de IA
CSV Una fila de encabezado y, después, una línea por registro; los valores se separan con comas Hojas de cálculo y exportaciones de bases de datos
TSV Como CSV, pero con tabulaciones entre los valores Celdas copiadas de una hoja de cálculo
MessagePack Datos binarios, representados aquí como bytes hexadecimales Mensajes compactos entre programas
JSON5 JSON que también permite comentarios, comillas simples y claves sin comillas Archivos de configuración escritos a mano
JSONL Un valor JSON por línea; también se conoce como JSON Lines o NDJSON Registros y conjuntos de datos
INI Líneas clave = valor bajo encabezados [sección] Archivos de ajustes de programas, como php.ini
Properties Líneas clave = valor con claves separadas por puntos Aplicaciones Java, como los archivos application.properties de Spring Boot

Descripción de la herramienta

Esta herramienta convierte datos entre estos 12 formatos: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI y Properties de Java. Todos los conversores de formatos de datos funcionan igual, tanto el Conversor de formatos de datos general como los que admiten un solo par, como JSON a YAML, CSV a JSON o XML a JSON: se abren con los formatos que aparecen en su nombre, y los menús Origen y Destino permiten elegir cualquier otro. Pega o escribe tus datos y el resultado aparecerá a medida que escribas en un editor de código con resaltado de sintaxis, listo para copiar. El botón de intercambio invierte la conversión y convierte el resultado en la nueva entrada.

Si la entrada no es válida en el formato de origen, el mensaje de error indica cuál es el problema, normalmente con la línea y la columna correspondientes.

Tus datos se convierten en el navegador y nunca se suben.

Ejemplo

Este JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}

se convierte en este YAML:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false

en este CSV, con una fila por usuario:

id,name,admin
1,Ann,true
2,Bo,false

y en este TOON:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Cómo se corresponden los formatos

No todos los formatos admiten los mismos tipos de datos, por lo que algunas conversiones siguen estas reglas:

  • CSV y TSV contienen una tabla. La primera fila indica los nombres de las columnas y cada fila restante se convierte en un objeto. Los objetos anidados se convierten en columnas cuyos nombres reflejan su ruta, y las listas se convierten en texto JSON dentro de sus celdas. Por ejemplo, {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} se convierte en las columnas name, address.city y tags. Al convertirlas de nuevo, esas columnas vuelven a convertirse en objetos anidados y listas. Cuando los datos son un objeto que contiene una sola lista, como {"users": [...]}, las filas corresponden a los elementos de esa lista, y una lista de listas se convierte en filas sin encabezado.
  • Valores de texto: CSV, TSV, XML, INI y Properties solo admiten texto, así que los conversores transforman true y false en valores booleanos y los números escritos sin formato especial, como 42 o 3.5, en números. Los valores como 007, 1.50 o 1e3 siguen siendo texto, para conservar el formato exacto de códigos postales y números de versión.
  • Los atributos de XML se convierten en claves que empiezan por @, y el texto de un elemento que tiene atributos se convierte en #text: <price currency="USD">44.95</price> se convierte en {"@currency": "USD", "#text": 44.95}. Los elementos repetidos se convierten en una lista. Al convertir a XML, las claves que empiezan por @ vuelven a convertirse en atributos. Un objeto con una sola clave cuyo valor no sea una lista se convierte en el elemento raíz. Los demás datos se incluyen dentro de un elemento <root>, y cada elemento de una lista en el nivel superior se incluye en un elemento <item>. Los caracteres que no se pueden usar en nombres XML, como los espacios, se convierten en _.
  • TOML, INI y Properties solo pueden contener valores con nombre en el nivel superior, así que las listas se escriben bajo el nombre items y los valores únicos, bajo value. TOML no admite valores nulos, por lo que estos se omiten.
  • INI representa los objetos anidados como secciones, por ejemplo, [server.ssl]; las listas de valores, como líneas key[] = value; y las listas de objetos, como secciones con nombres basados en su posición, por ejemplo, [users.0].
  • Las claves de Properties unen los nombres anidados con puntos y numeran los elementos de las listas entre corchetes, como app.hosts[0], tal como los escribe Spring Boot. Al convertirlas a YAML o JSON, esas claves se convierten en objetos anidados y listas, de modo que un archivo application.properties se convierte en la estructura de un archivo application.yml. Los caracteres que no pertenecen a Latin-1 se escriben como secuencias de escape \u.
  • Los resultados YAML incluyen entre comillas el texto que los lectores de YAML 1.1 interpretarían como otra cosa, como on, yes o una fecha, para que los lectores de YAML 1.1 y YAML 1.2 obtengan los mismos datos. Un archivo YAML con varios documentos separados por --- se convierte en una lista, y se completan las claves de combinación <<.
  • MessagePack es binario, por lo que las herramientas lo leen y escriben como bytes hexadecimales: {"a": 1} se convierte en 81 A1 61 01. La entrada puede incluir espacios, comas y 0x delante de cada byte. Varios mensajes consecutivos se convierten en una lista.
  • Los resultados JSONL incluyen cada elemento de la lista en una línea independiente.
  • Los números enteros demasiado grandes para los números de JavaScript, como los identificadores de 64 bits, conservan todos sus dígitos.
  • Las fechas y horas de TOML, y las marcas de tiempo de MessagePack, se convierten en texto como 1979-05-27T07:32:00Z.

Consejos

  • Para convertir celdas de una hoja de cálculo, cópialas y pégalas como TSV: las aplicaciones de hojas de cálculo copian las celdas como texto separado por tabulaciones.
  • CSV y TSV son adecuados para datos que consisten en una lista de registros similares. Los datos con muchos niveles de anidamiento se leen mejor en YAML, TOML o TOON.
  • Los comentarios de los archivos YAML, XML, TOML, JSON5, INI y Properties no se conservan, ya que los conversores solo transfieren los datos.