Skip to content

Conversor de CSV para JSON (e vice-versa)

CSV ↔ JSON com análise RFC 4180 de verdade, inteiramente no seu navegador.

Buğra SözeriDesenvolvedor
Updated · Published

CSV parece trivial — valores separados por vírgulas — e é exatamente por isso que tantos conversores erram. O CSV do mundo real tem campos entre aspas que contêm vírgulas, aspas escapadas escritas como duas aspas duplas, quebras de linha embutidas dentro de uma única célula e um zoológico de dialetos de delimitadores: o Excel na maioria das localidades europeias — e no Brasil — exporta com ponto e vírgula porque a vírgula é o separador decimal. O parser abaixo segue a RFC 4180, o mais próximo que o CSV tem de um padrão, e detecta automaticamente delimitadores de vírgula, ponto e vírgula ou tabulação. Tudo roda localmente no seu navegador; seus dados nunca tocam um servidor.

[ { "name": "Doe, Jane", "city": "Berlin", "zip": "10115" }, { "name": "Bob", "city": "Princeton", "zip": "08540" } ]

How to use

  1. Escolha uma direção

    CSV → JSON ou JSON → CSV. Soltar um arquivo .csv ou .json na entrada troca a direção automaticamente.

  2. Cole ou solte seus dados

    Cole o texto diretamente, ou arraste um arquivo .csv ou .json (até 8 MB) para a caixa de entrada. A saída convertida aparece enquanto você digita.

  3. Ajuste as opções

    Deixe o delimitador em detecção automática, a menos que ele erre. Desmarque 'First row is header' para dados sem cabeçalho, e marque 'Infer types' apenas se seus dados não tiverem zeros à esquerda nem IDs numéricos longos.

  4. Copie ou baixe

    Use o botão de copiar para colagens rápidas, ou baixe o resultado como data.json ou data.csv.

Frequently asked questions

Posso enviar um arquivo em vez de colar?
Sim — arraste um arquivo .csv ou .json para a caixa de entrada. Ele é lido localmente com o FileReader do navegador (até 8 MB) e nunca é enviado a lugar nenhum. Soltar um arquivo .json também muda a ferramenta para o modo JSON → CSV.
Por que os números ficam como strings por padrão?
Porque a coerção silenciosa corrompe dados reais. Um CEP como 08540 perde o zero à esquerda no momento em que vira número, e um ID de 16 dígitos como um número de cartão ou de conta ultrapassa o limite de inteiros seguros do JavaScript (2^53) e é arredondado. Strings são sem perdas; ative 'Infer types' apenas quando souber que suas colunas são genuinamente numéricas ou booleanas.
Meu CSV usa ponto e vírgula — vai funcionar?
Sim. O Excel em português, alemão, francês e a maioria das outras localidades europeias exporta arquivos separados por ponto e vírgula porque ali a vírgula é o separador decimal. O detector automático pontua vírgula, ponto e vírgula e tabulação na primeira linha de dados e escolhe o vencedor; você também pode forçar um delimitador no menu suspenso.
E quebras de linha dentro de uma célula?
Tratadas corretamente. Pela RFC 4180, um campo entre aspas duplas pode conter quebras de linha, vírgulas e aspas (escapadas por duplicação). O parser acompanha o estado das aspas entre as linhas em vez de dividir ingenuamente por quebras de linha, que é onde a maioria dos conversores improvisados quebra.
Como o JSON aninhado é convertido em CSV?
CSV é plano, então objetos e arrays aninhados não podem ser representados nativamente. Esta ferramenta serializa qualquer valor aninhado com JSON.stringify dentro da célula — uma limitação honesta em vez de um achatamento com perdas por adivinhação. Se você precisa de achatamento em colunas com caminhos pontuados, reestruture o JSON primeiro.
O que acontece com cabeçalhos de coluna duplicados?
Nomes de cabeçalho duplicados são desduplicados com um sufixo de índice: uma segunda coluna 'name' vira 'name_2', uma terceira 'name_3' e assim por diante. Sem isso, colunas posteriores sobrescreveriam silenciosamente as anteriores nos objetos resultantes.

About

A RFC 4180 na prática versus os dialetos na natureza

A RFC 4180 é um memorando informativo de 2005, não um padrão estrito, mas codificou o núcleo sensato: campos separados por vírgulas, registros por CRLF, campos contendo vírgulas, aspas ou quebras de linha envolvidos em aspas duplas, e aspas literais escapadas por duplicação. Na natureza há desacordo sobre quase todo o resto — delimitadores de ponto e vírgula e tabulação, finais de linha só com LF, quebras de linha finais opcionais, byte-order marks do Excel e arquivos sem cabeçalho. Um conversor robusto aceita os dialetos na entrada (este detecta delimitadores automaticamente e aceita tanto CRLF quanto LF) enquanto emite saída estritamente conforme.

Quando o CSV ganha do JSON, e vice-versa

O CSV vence para dados planos e tabulares: é menor, transmite linha a linha, abre diretamente no Excel e no Google Planilhas, e carrega em todo banco de dados e biblioteca de dataframes já escritos. O JSON vence no momento em que seus dados têm estrutura — aninhamento, arrays de tamanhos diferentes, valores tipados ou campos opcionais. Ele também é autodescritivo e não ambíguo sobre strings versus números, o que o CSV fundamentalmente não é. Uma regra útil: se os dados são uma tabela, envie CSV; se são uma árvore, envie JSON; se são uma tabela hoje mas podem ganhar estrutura, envie JSON e aceite o custo de tamanho.

Sources & references

Authoritative references behind the math, constants, and tables on this page. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.

Ferramentas relacionadas