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 como bytes hexadecimais na aba Texto 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.

Os conversores recebem dados como texto que você cola ou digita, ou como arquivos, e entregam texto ou arquivos. Escolha qual com as abas Arquivo e Texto, no topo do lado de origem e do lado de destino. Os dois lados começam em Texto.

  • Texto na entrada: cole ou digite seus dados, e eles são convertidos enquanto você digita.
  • Arquivo na entrada: escolha ou arraste e solte um ou vários arquivos. O botão Procurar arquivos lista apenas arquivos no formato de origem, mas os arquivos que você soltar ali podem estar em qualquer um dos 12 formatos, e cada um é convertido a partir do formato indicado pela sua extensão, então um arquivo .yaml é convertido como YAML mesmo no conversor de JSON para XML. Um arquivo arrastado com outra extensão, como .txt, é convertido a partir do formato de origem. Arquivos em UTF-16 ou em uma codificação legada, como Windows-1252, também são lidos.
  • Texto na saída: o resultado aparece em um editor de código com realce de sintaxe, pronto para copiar. Quando vários arquivos são convertidos, o menu Arquivo acima dele escolhe o arquivo exibido.
  • Arquivo na saída: os arquivos convertidos aparecem em uma grade, cada um com seu próprio botão Transferir, e mantêm o nome com a nova extensão. O botão Baixar tudo salva todos os arquivos convertidos em um único arquivo ZIP, ou um único arquivo convertido como está. Dados colados geram um arquivo chamado converted, como converted.yaml. Os arquivos convertidos são texto UTF-8, exceto os arquivos MessagePack, que são binários.

O botão de troca inverte a conversão: o formato de destino passa a ser a origem, os dois lados trocam de aba, e o resultado se torna a 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. Com arquivos, a mensagem de erro cita os arquivos que falharam, e a aba Texto do lado de destino mostra os detalhes do arquivo exibido nela.

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. Como texto, as ferramentas o leem e gravam como bytes hexadecimais: {"a": 1} é 81 A1 61 01, e a entrada pode ter espaços, vírgulas e 0x antes de cada byte. Arquivos MessagePack, escolhidos ou salvos na aba Arquivo, contêm os próprios bytes, então um arquivo .msgpack convertido é binário. 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.