Texto e código / Guias

JSON, CSV, YAML ou JSON Lines: como escolher o formato de dados

Uma conversão de dados é útil somente quando o destino ainda entende os campos, tipos e limites de registro que importam.

Escolha pela forma dos dados

JSON representa arrays, objetos, strings, números, booleanos e null explicitamente. É um formato de intercâmbio natural para dados e configurações de API aninhados que um programa lê. CSV é uma tabela: cada registro tem campos em uma ordem de coluna compartilhada. É conveniente para linhas simples e importações de planilhas, mas uma célula CSV não diz inerentemente se 0012 é um identificador, um número ou texto. YAML é frequentemente escolhido para configuração que as pessoas editam porque oferece mapeamentos, sequências e recuo legível; suas regras de análise ainda requerem cuidado. JSON Lines armazena um valor JSON completo por linha, tornando um fluxo de registros mais fácil de anexar ou processar de forma independente. Escolha a forma que o software de recepção espera, em vez da extensão que parece mais familiar.

Um pequeno exemplo em todos os formatos

Considere o array JSON [{"id":1,"city":"Paris"},{"id":2,"city":"Lima"}]. Uma exportação CSV simples tem um cabeçalho id,city seguido pelas linhas 1,Paris e 2,Lima. Uma renderização YAML pode mostrar uma sequência de dois mapeamentos, cada um com as chaves id e city. Em JSON Lines, a primeira linha é {"id":1,"city":"Paris"} e a segunda é {"id":2,"city":"Lima"}; não há nenhum array externo. Os conversores vinculados permitem que você inspecione essas representações diretamente. Observe o que acontece quando a cidade contém uma vírgula, aspas ou quebra de linha: os campos CSV precisam ser colocados entre aspas e escapados conforme o dialeto usado pelo leitor. O exemplo curto esconde essa complexidade, então teste valores realistas antes de exportar um conjunto de dados grande.

Os mesmos dois registros organizados para leitores diferentes.
  1. JSON: array de objetos com tipos definidos
  2. CSV: cabeçalho mais linhas planas · YAML: mapeamentos recuados
  3. JSON Lines: um objeto JSON por linha

Tipos e estruturas aninhadas precisam de uma decisão

Um objeto JSON pode conter outro objeto ou um array. Uma linha CSV plana convencional não pode expressar essa estrutura sem um mapeamento acordado, como colunas separadas, uma célula serializada JSON ou várias tabelas. Uma ferramenta de conversão deve escolher uma política; inspecionar sua saída em vez de assumir que nenhuma informação foi perdida. Números e booleanos podem se tornar texto de célula no CSV, enquanto a leitura deles pode exigir conversão de tipo explícita. Um zero à frente em um identificador de conta é significativo, mesmo que uma planilha queira tratá-lo como um número. YAML pode expressar o mesmo modelo de dados amplo como JSON, mas escalares sem aspas e recuo merecem revisão quando outro analisador lê o arquivo. JSON Lines retém tipos JSON em cada registro, mas cada linha física deve conter um valor JSON válido.

Teste uma viagem de ida e volta com registros representativos

Antes de converter o arquivo completo, faça uma amostra contendo uma linha normal, um campo vazio, um campo entre aspas, uma vírgula, um caractere não ASCII e um valor aninhado, se seus dados tiverem um. Converta-o, depois converta de volta onde uma ferramenta reversa existe. Compare a estrutura e os tipos, não apenas o texto visível. Verifique os nomes das colunas, a contagem de registros, a ordem e se o null é diferente de uma string vazia. Para JSON Lines, certifique-se de que os registros estejam separados por quebras de linha e que um objeto formatado em várias linhas não tenha sido confundido com vários registros. O conversor incorporado de JSON para CSV abaixo começa com dois registros simples; altere um valor e examine a saída. Use os outros conversores vinculados para testar YAML e caminhos delimitados por linha.

Combine o destino e proteja as importações

Para uma planilha de registros uniformes e sem estruturas aninhadas, CSV costuma ser prático. Documente o delimitador, a codificação de caracteres e os tipos das colunas esperados pelo importador. Se os valores vierem de pessoas não confiáveis, a planilha poderá interpretar como fórmulas as células que começam com determinados caracteres; uma exportação destinada a planilhas precisa de uma política de segurança própria. YAML pode ser legível para configurações mantidas por pessoas, mas valide o arquivo com o parser que realmente o receberá. Para APIs e documentos estruturados, JSON geralmente mostra tipos e níveis de aninhamento com mais clareza. Para logs e fluxos que processam um evento por vez, JSON Lines pode evitar o carregamento de um array enorme. Converter a sintaxe com sucesso é apenas a primeira verificação; o resultado depende de como o programa de destino interpreta os dados.

Testar o conversor

Edite o exemplo JSON de dois registros e inspecione a tabela CSV resultante.

Transforme um array plano de objetos JSON em linhas CSV.

Abrir o conversor completo

Mais guias

Guias de conversão

Explorar guias