Pular para o conteúdo principal

JSON vs CSV

Escolha CSV para dados planos, em formato de linha, com destino a planilhas, importações em massa ou ferramentas orientadas a colunas — ele flui barato e abre em qualquer lugar. Escolha JSON quando os registros se aninham, os tipos importam ou um programa consome o payload. CSV é uma tabela e JSON é uma árvore; converta quando o consumidor muda, não os dados.

Só local

JSON vs CSV: explicação

CSV é o formato em que os dados chegam do mundo físico: exportações de planilhas, extratos bancários, despejos de sensores, downloads de CRM. Parece trivialmente simples — valores separados por vírgulas — e essa simplicidade aparente é exatamente o motivo de ser tão maltratado. A RFC 4180 define uma disciplina precisa de aspas que a maioria dos arquivos reais segue de forma frouxa, e os dialetos se multiplicam a partir daí. JSON, em contraste, é o formato com que programas trocam dados entre si: uma gramática pequena, seis tipos e aninhamento tão profundo quanto os dados precisarem.

A diferença essencial é a forma. Um arquivo CSV é uma tabela bidimensional: linhas de colunas, um valor por célula, e tudo é texto. Um documento JSON é uma árvore: objetos dentro de arrays dentro de objetos, com cada valor carregando seu próprio tipo. Nenhum é melhor; respondem a perguntas diferentes. Mas a maior parte da dor de conversão — e das conversões mais quebradas — vem de forçar uma árvore numa tabela, ou de fingir que uma tabela tem estrutura que não tem.

Esta página os compara onde as decisões realmente acontecem: estrutura, tipagem e aspas, comportamento do Excel, volume de dados e streaming. As duas direções de conversão estão linkadas abaixo e rodam inteiramente no seu navegador, com as regras de achatamento e de inferência de tipos documentadas em vez de escondidas.

Transformar uma resposta de API em algo que um analista consiga abrir é a travessia clássica — o conversor de JSON para CSV achata um array de registros em colunas com um único colar, inteiramente no seu navegador.

Vai ingerir a exportação de planilha de um fornecedor no código? O conversor de CSV para JSON acrescenta tipos e estrutura localmente, antes que o arquivo chegue ao seu parser.

Forma: uma tabela versus uma árvore

Um arquivo CSV é uma sequência de registros, cada um da mesma largura: nome, e-mail, valor, repetidos a cada linha. Uma linha de cabeçalho — convenção, não garantia — dá nome às colunas uma vez para o arquivo inteiro. Registros JSON, em vez disso, carregam suas chaves consigo, então todo objeto é autodescritivo, e um objeto pode conter um array de objetos que contêm arrays. Essa assimetria decide a escolha de formato mais do que qualquer lista de recursos.

AspectoJSONCSV
FormaÁrvore — objetos e arrays se aninham livrementeUma tabela plana de linhas e colunas
TiposSeis tipos, declarados na sintaxeNenhum — toda célula é texto
ChavesCada objeto carrega as suasUma linha de cabeçalho, por convenção
AninhamentoProfundidade ilimitadaImpossível sem achatamento ou arquivos extras
PadrãoRFC 8259, uma gramáticaRFC 4180, mais dialetos persistentes do mundo real
Valores vaziosnull, declarado deliberadamenteCélula vazia — ou uma coluna inteira ausente

Tipos e aspas: declarados versus inferidos

No JSON, o tipo de um valor é visível: aspas significam string, dígitos soltos significam número, e true, false e null são tokens exatos. No CSV, o arquivo não afirma nada — 007 e 7 são ambos texto de célula simples, e cada consumidor reinfere os tipos sob suas próprias regras. A RFC 4180 especifica as aspas com precisão: campos contendo vírgulas, aspas duplas ou quebras de linha são envolvidos em aspas duplas, e aspas internas são dobradas. Arquivos que ignoram isso produzem os clássicos bugs de linha quebrada que todo engenheiro de dados já depurou.

A etapa de reinferência é onde os dados corrompem em silêncio. Um código postal 02134 vira o número 2134; 1.20 vira 1.2; um número de conta longo vira 4.2E+12. JSON tem a regra espelhada — números não podem ter zeros à esquerda de forma alguma, então um código postal também precisa ser string lá — mas ao menos a declaração é explícita, em vez de um chute feito pela planilha de outra pessoa.

Excel, dados em volume e onde cada formato vence

O comportamento do Excel merece parágrafo próprio porque queima tantos pipelines. O Excel abre CSV nativamente, mas redefine o tipo de cada célula usando o locale da máquina: zeros à esquerda somem, marcações ISO de data e hora viram datas no formato local, e em boa parte da Europa vale o dialeto do ponto e vírgula, porque a vírgula é separador decimal. Ao salvar, o arquivo é reescrito com essas inferências gravadas para sempre. JSON nunca passa pelo Excel, o que por si só já é uma razão para integrações preferi-lo.

Em escala, a natureza plana do CSV é uma vantagem: linhas são processadas uma a uma com memória constante, e é por isso que exportações de vários gigabytes e ferramentas orientadas a colunas ainda falam CSV primeiro. JSON vence onde o consumidor é um programa e a estrutura é real: payloads de API, configuração, documentos aninhados. Escolher pelo consumidor, e não pela moda, resolve a maioria das discussões em uma frase.

Quando escolher cada um — e como a conversão se comporta

Escolha CSV quando o destino é tabular: planilhas, cargas em massa em banco de dados, ferramentas de BI e de ciência de dados. Escolha JSON quando a estrutura se aninha ou o consumidor é código. A orientação se inverte o tempo todo em pipelines reais: uma API devolve JSON, um analista quer CSV, um fornecedor manda CSV que um serviço precisa ingerir — conversão é manutenção de rotina, não um projeto de migração.

A conversão tem limites honestos. JSON para CSV precisa achatar: um array de objetos vira linhas, a união das chaves deles vira colunas, e qualquer array ou objeto aninhado precisa ser transformado em string, unido ou descartado. CSV para JSON precisa inferir: células vazias viram null ou strings vazias, e células com cara de número viram números. Os conversores deste site documentam exatamente essas regras em vez de adivinhar em silêncio.

Perguntas frequentes

CSV consegue guardar dados aninhados como JSON?

Não — a RFC 4180 não tem conceito de aninhamento; célula é célula. As soluções de contorno são achatamento (address_city como nome de coluna), serializar um fragmento JSON dentro de uma célula com aspas, ou dividir em vários arquivos unidos por uma chave. JSON Lines — um objeto JSON plano por linha — é o meio-termo comum para dados em formato de registro.

Por que o Excel altera meus valores quando abro um CSV?

O Excel reinferencia o tipo de cada célula ao carregar: 02134 perde o zero à esquerda, um número de conta de dezesseis dígitos vira 1.23457E+12, e 2026-09-19 vira uma data dependente do locale. Essas inferências são salvas de volta no arquivo. Importar pelo assistente de importação de texto do Excel, com as colunas forçadas para texto, evita o dano; JSON, interpretado por um programa, nunca redefine tipo algum.

Os conversores de JSON e CSV enviam meus arquivos?

Não. Interpretação, achatamento e aplicação de aspas acontecem todos dentro da sua aba do navegador; não há endpoint de envio, e a Content-Security-Policy do site só permite requisições de rede para ele mesmo. Observar o painel Network do DevTools enquanto converte confirma — nada sai da aba, e é esse o ponto de ferramentas que rodam localmente.

CSV é um padrão de verdade?

O núcleo do CSV é a RFC 4180: finais de linha CRLF, delimitadores de vírgula, aspas dobradas para aspas internas, e uma linha de cabeçalho opcional que o próprio padrão nota explicitamente ser comum. Os dialetos do mundo real persistem mesmo assim — delimitadores de ponto e vírgula em boa parte da Europa, variantes separadas por tabulação, codificações inconsistentes com ou sem BOM. A gramática de uma página do JSON deixa muito menos espaço para dialetos.

Qual formato lida melhor com arquivos muito grandes?

CSV, normalmente. Linhas podem ser interpretadas e descartadas uma a uma com memória constante, então o tamanho do arquivo quase não pesa para um leitor em streaming. JSON é tipicamente interpretado como um documento inteiro antes do uso, com custo de memória proporcional ao tamanho — parsers de JSON em streaming existem, mas não são o padrão. Para exportações planas enormes, fique no CSV; para as aninhadas enormes, considere JSON Lines.

Como a conversão de JSON para CSV escolhe as colunas?

Varrendo os registros e tomando a união das chaves, na ordem em que aparecem pela primeira vez, como linha de cabeçalho; registros sem uma chave recebem uma célula vazia. Objetos e arrays aninhados não cabem numa coluna, então os conversores precisam transformá-los em string ou uni-los — o conversor deste site documenta a escolha que faz em vez de deixar para a surpresa.

Onde posso ler os padrões citados aqui?

  • RFC 4180 — Formato comum e tipo MIME para arquivos de valores separados por vírgula (CSV)
  • RFC 8259 — O formato de intercâmbio de dados JavaScript Object Notation (JSON)