O que são esses formatos de dados?

Os programas armazenam e trocam dados estruturados, como configurações, registros e listas, em formatos de texto que representam os dados de maneiras diferentes. Um conversor é útil quando um programa fornece dados em um formato que outro não consegue ler, ou quando determinado formato é mais fácil de ler ou editar para a tarefa em questão.

Formato Como representa os dados Onde você encontra
JSON Objetos entre chaves, listas entre colchetes, texto entre aspas duplas APIs Web e configurações de aplicativos
YAML Linhas indentadas chave: valor, itens de lista iniciados por - Docker Compose, Kubernetes e arquivos de pipeline de CI
XML Elementos em tags, que podem ter atributos Documentos, feeds RSS e serviços Web SOAP
TOML Linhas chave = valor sob cabeçalhos [tabela] Arquivos de configuração, como Cargo.toml e pyproject.toml
TOON Linhas indentadas, com listas de registros em linhas sob seus campos Dados estruturados enviados a modelos de linguagem de IA
CSV Uma linha de cabeçalho, seguida de uma linha por registro, com valores separados por vírgulas Planilhas e exportações de bancos de dados
TSV Como CSV, mas com tabulações entre os valores Células copiadas de uma planilha
MessagePack Dados binários, exibidos aqui como bytes hexadecimais Mensagens compactas entre programas
JSON5 JSON que também permite comentários, aspas simples e chaves sem aspas Arquivos de configuração escritos manualmente
JSONL Um valor JSON por linha, também chamado de JSON Lines ou NDJSON Logs e conjuntos de dados
INI Linhas chave = valor sob cabeçalhos [seção] Arquivos de configuração de programas, como php.ini
Propriedades Linhas chave = valor com chaves separadas por pontos Aplicativos Java, como os arquivos application.properties do Spring Boot

Descrição da ferramenta

Esta ferramenta converte dados entre estes 12 formatos: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI e propriedades Java. Todos os conversores de formatos de dados aqui funcionam da mesma maneira, desde o Conversor geral de formatos de dados até os conversores para um único par, como JSON para YAML, CSV para JSON ou XML para JSON: eles começam com os formatos indicados no nome, e os menus Origem e Destino permitem escolher qualquer outro. Cole ou digite seus dados, e o resultado aparece enquanto você digita em um editor de código com realce de sintaxe, pronto para copiar. O botão de troca inverte a conversão e transforma o resultado na nova entrada.

Quando a entrada não é válida no formato de origem, a mensagem de erro informa o que está errado, geralmente indicando a linha e a coluna do problema.

Seus dados são convertidos no navegador e nunca são enviados para um servidor.

Exemplo

Este JSON:

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

se transforma neste YAML:

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

neste CSV, com uma linha por usuário:

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

e neste TOON:

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

Como os formatos são convertidos entre si

Os formatos não armazenam todos os mesmos tipos de dados, então algumas conversões seguem estas regras:

  • CSV e TSV armazenam uma tabela. A primeira linha nomeia as colunas, e cada uma das linhas seguintes se torna um objeto. Objetos aninhados se tornam colunas nomeadas de acordo com seus caminhos, e listas se tornam texto JSON em suas células, então {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} se transforma nas colunas name, address.city e tags. Na conversão de volta, essas colunas se tornam objetos aninhados e listas novamente. Quando os dados são um objeto que contém uma única lista, como {"users": [...]}, as linhas correspondem aos itens dessa lista, e uma lista de listas se torna linhas sem cabeçalho.
  • Valores de texto: CSV, TSV, XML, INI e propriedades armazenam apenas texto, então os conversores transformam true e false em valores booleanos e números escritos sem formatação especial, como 42 ou 3.5, em números. Valores como 007, 1.50 ou 1e3 permanecem como texto, preservando exatamente o formato de códigos postais e números de versão.
  • Os atributos XML se tornam chaves iniciadas por @, e o texto de um elemento que tem atributos se torna #text: <price currency="USD">44.95</price> se transforma em {"@currency": "USD", "#text": 44.95}. Elementos repetidos se tornam uma lista. Na conversão para XML, as chaves iniciadas por @ voltam a ser atributos. Um objeto com uma única chave cujo valor não seja uma lista se torna o elemento raiz. Os outros dados ficam dentro de um elemento <root>, com cada item de uma lista no nível superior dentro de um elemento <item>. Caracteres que não podem ser usados em nomes XML, como espaços, são substituídos por _.
  • TOML, INI e propriedades só podem armazenar valores nomeados no nível superior, então os dados que forem uma lista são escritos com o nome items, e um valor único, com o nome value. TOML não tem valor nulo, então os valores nulos são omitidos.
  • INI representa objetos aninhados como seções, como [server.ssl], listas de valores como linhas chave[] = valor e listas de objetos como seções nomeadas de acordo com sua posição, como [users.0].
  • As chaves de propriedades unem nomes aninhados com pontos e numeram itens de listas entre colchetes, como app.hosts[0], seguindo o formato usado pelo Spring Boot. Quando convertidas para YAML ou JSON, essas chaves se tornam objetos e listas aninhados, então um arquivo application.properties é convertido para a estrutura de um arquivo application.yml. Caracteres fora do Latin-1 são escritos como sequências de escape \u.
  • Os resultados YAML colocam entre aspas o texto que leitores YAML 1.1 interpretariam como outra coisa, como on, yes ou uma data, para que leitores YAML 1.1 e YAML 1.2 obtenham os mesmos dados. Um arquivo YAML com vários documentos separados por --- se torna uma lista desses documentos, e as chaves de mesclagem << são expandidas.
  • MessagePack é binário, então as ferramentas o leem e gravam como bytes hexadecimais: {"a": 1} é 81 A1 61 01. A entrada pode ter espaços, vírgulas e 0x antes de cada byte. Várias mensagens consecutivas se tornam uma lista.
  • Os resultados JSONL têm cada item da lista em sua própria linha.
  • Números inteiros grandes demais para serem representados por números JavaScript, como IDs de 64 bits, preservam todos os seus dígitos.
  • Datas e horas TOML e carimbos de data/hora MessagePack se tornam texto, como 1979-05-27T07:32:00Z.

Dicas

  • Para converter células de uma planilha, copie-as e cole-as como TSV: aplicativos de planilha copiam células como texto separado por tabulações.
  • CSV e TSV são adequados para dados organizados como uma lista de registros semelhantes. Dados profundamente aninhados são mais fáceis de ler como YAML, TOML ou TOON.
  • Os comentários em arquivos YAML, XML, TOML, JSON5, INI e de propriedades não são mantidos, pois os conversores transferem apenas os dados.