Conversor de CSV para JSON
Converta CSV para JSON ou JSON para CSV, com detecção do delimitador, tratamento de cabeçalhos e conversão de tipos sem perdas.
A saída aparecerá aqui
O que esta ferramenta faz
O CSV é o que as planilhas, as exportações de bancos de dados e os painéis de análise lhe entregam; o JSON é o que as APIs e o código querem. Esta ferramenta converte entre ambos nos dois sentidos, no seu navegador. Cole CSV e obtém um array JSON — objetos com as chaves da linha de cabeçalho, ou arrays simples quando os dados não a têm. Troque o sentido e um array JSON volta a ser CSV, com cada valor entre aspas exatamente na medida necessária.
O trabalho acontece no seu dispositivo, e aqui isso importa: o CSV é o formato para onde se exportam listas de clientes, faturas e extratos analíticos. Nada disso é enviado para lugar nenhum.
Por que dividir por vírgulas não chega
A forma óbvia de ler CSV — dividir cada linha por vírgulas — falha com arquivos reais, porque o formato tem um mecanismo de escape. Um campo entre aspas duplas pode conter o delimitador, uma aspa literal escrita como duas aspas seguidas e até quebras de linha, caso em que um registro se estende por várias linhas do arquivo. Esta ferramenta aplica as regras verdadeiras (RFC 4180) com um analisador caractere a caractere, por isso os três casos chegam intactos.
name,note Grace,"rear admiral, USN" Ada,"she said ""hello""" Alan,"two lines"
Estes quatro registros têm dois campos cada um, apesar das vírgulas, aspas e da quebra de linha a mais. Se as aspas estiverem malformadas — um campo abre uma aspa e nunca a fecha — recebe a linha e a coluna onde a aspa descontrolada começou, em vez de uma tabela silenciosamente deformada.
O delimitador muitas vezes não é uma vírgula
Apesar do nome, os valores separados por vírgulas muitas vezes não o são. Nas configurações regionais em que a vírgula é o separador decimal — a maior parte da Europa continental — o Excel exporta com ponto e vírgula, porque aí 1,50 é um número. As ferramentas de bancos de dados e de linha de comando produzem frequentemente dados separados por tabulações, e os pipelines de registros preferem barras verticais. Colar um desses numa ferramenta que só entende vírgulas produz uma única coluna larguíssima: a frustração mais comum com CSV.
Por isso o delimitador é detectado em vez de assumido. Cada candidato é experimentado, sobrevivem só os que dão o mesmo número de colunas em todas as linhas e, desses, vence o que dá mais colunas — primeiro a consistência, depois a largura. Um tipo de arquivo consegue enganar essa regra: quando cada campo de cada linha é um número com vírgula decimal, e nenhum cabeçalho de nomes quebra o padrão, a vírgula também divide de forma consistente — e em mais colunas —, então ela vence o delimitador verdadeiro. Por isso o delimitador detectado é sempre mostrado: confira, e troque se o palpite estiver errado.
Cabeçalhos e a forma da saída
Com «a primeira linha é um cabeçalho» ativo, essa linha fornece os nomes das chaves e a saída é um array de objetos — a forma que quase todas as APIs esperam. Desativado, cada linha passa a ser um array de valores, que é o que se quer para um arquivo que começa logo com dados.
- Uma linha com menos campos do que o cabeçalho recebe strings vazias nas colunas em falta, em vez de chaves com valor undefined.
- Nomes de cabeçalho duplicados tornam-se únicos (id, id_2, id_3) em vez de se sobreporem uns aos outros, o que faria desaparecer colunas em silêncio.
- Uma célula de cabeçalho vazia passa a column_2, column_3 e por aí fora, para que nenhuma chave seja a string vazia.
- As linhas em branco são ignoradas, como fazem os importadores de planilhas: um arquivo colado termina muitas vezes com uma quebra de linha solta, e uma linha de valores vazios aí parece um erro.
Conversão de tipos que não pode perder dados
Todo o campo CSV é texto. Converter texto que parece numérico em números JSON costuma ser o que se quer — mas é também a forma como os dados são destruídos em silêncio. Um código postal 01234 passa a 1234. Um número de encomenda de 20 dígitos passa a um float arredondado. Um preço escrito 1.50 perde o zero final.
A regra usada aqui evita tudo isso sem uma lista de casos especiais: um valor só se torna número se ao voltar a texto reproduzir exatamente o original. 42 consegue, por isso é convertido. 01234 não, por isso permanece string. Nem 1.50, +5, 1e5, nem qualquer inteiro para lá do ponto em que os doubles perdem precisão. As strings true e false tornam-se booleanos; um campo vazio permanece string vazia em vez de se tornar null, porque o CSV não consegue exprimir a diferença entre «sem valor» e «valor vazio», e inventar uma seria inventar informação.
De volta ao CSV
No sentido inverso, um array de objetos torna-se uma tabela cujas colunas são a união de todas as chaves, pela ordem em que aparecem pela primeira vez — assim linhas com chaves diferentes continuam alinhadas, e uma chave em falta produz uma célula vazia. Um array de arrays é escrito linha a linha. As aspas são aplicadas apenas onde o formato exige: um valor que contenha o delimitador, uma aspa ou uma quebra de linha é envolvido, com as aspas interiores duplicadas.
Os valores que o CSV não consegue representar — um objeto ou array aninhado — são escritos como JSON dentro da sua célula, em vez de achatados ou descartados, para que nada desapareça numa conversão. Null torna-se uma célula vazia.
Perguntas frequentes
- Por que o meu arquivo saiu como uma única coluna gigante?
- O delimitador não é aquele que a ferramenta usou. Normalmente isso significa um arquivo com ponto e vírgula (o padrão do Excel em configurações europeias, onde a vírgula é o separador decimal) ou uma exportação separada por tabulações. A detecção costuma pegar isso — veja qual o delimitador mostrado e escolha outro na lista se o palpite falhou.
- Por que o meu ID continua sendo uma string no JSON?
- Porque convertê-lo iria alterá-lo. Os números só são convertidos quando a conversão é exatamente reversível, por isso 01234 mantém o zero inicial e os IDs longos mantêm todos os dígitos. Se os quiser mesmo como números, os dados têm de ser escritos sem o zero inicial, ou pode converter depois, onde controla a precisão.
- O que acontece às vírgulas e às aspas dentro de um campo?
- São preservadas. À entrada, um campo entre aspas pode conter vírgulas, aspas duplicadas e até quebras de linha; à saída, qualquer valor que contenha o delimitador, uma aspa ou uma quebra de linha é colocado entre aspas e as suas aspas interiores duplicadas. Um valor atravessa CSV → JSON → CSV sem alterações.
- Meus dados são enviados para um servidor?
- Não. A análise e a conversão rodam inteiramente no seu navegador, por isso as listas de clientes, exportações e relatórios que costumam viver em CSV nunca saem do seu dispositivo.
Ferramentas relacionadas
- Conversor de JSON para YAML
Converte JSON em YAML explicando cada aspa.
- JSON para TypeScript
Infira interfaces TypeScript a partir de uma amostra JSON.
- Testador de JSONPath
Teste consultas JSONPath (RFC 9535) em JSON.
- Gerador de tabelas Markdown
Crie e alinhe tabelas Markdown a partir de CSV, TSV ou JSON.