Converter CSV em JSON
Transforme um arquivo CSV ou uma tabela colada em JSON limpo — números e booleanos tipados, objetos aninhados montados a partir de cabeçalhos com pontos, e exatamente o formato que o seu código espera.
- Nunca armazenado
- Sem fila, sem espera
- Sem cadastro, sem marca d'água
Como funciona
Adicione o CSV
Solte um arquivo .csv ou .tsv, ou cole os dados. O delimitador e a codificação são detectados para você.
Escolha o formato
Um array de objetos, um array de arrays, um objeto com a primeira coluna como chave ou JSON Lines — além de tipos, valores vazios e indentação.
Copie ou baixe
Copie o JSON para a área de transferência ou salve como arquivo .json.
Onde o CSV é mais vago do que parece
O CSV não tem um padrão de verdade — há uma especificação consultiva de 2005 que descreve o que a maioria das ferramentas faz, e muito software que faz outra coisa. Então o primeiro trabalho é descobrir o que o arquivo realmente é: se os valores são separados por vírgulas, ponto e vírgula ou tabulações (localidades europeias exportam com ponto e vírgula, porque a vírgula é o separador decimal delas), se a primeira linha é um cabeçalho e como as aspas são tratadas. Um campo entre aspas pode conter, legalmente, vírgulas, quebras de linha e aspas duplicadas, e é por isso que dividir nas vírgulas é o jeito errado de ler um CSV e por que um parser ingênuo corrompe qualquer arquivo que contenha um endereço.
Os tipos são o segundo trabalho, e o JSON tem opiniões que o CSV não tem. Uma célula de CSV contém texto e nada mais; o JSON distingue números, strings, booleanos e null. Algo precisa decidir o que é o quê, e as decisões que importam são as que dão errado: um zero à esquerda é significativo em um CEP, um número de telefone ou um número de conta, então um valor como 01234 precisa continuar string em vez de virar o número 1234. O mesmo vale para identificadores longos, que perdem precisão como números JSON acima de uns nove quatrilhões.
As datas ficam como o texto que eram, porque o JSON não tem tipo de data. 2024-03-05 sai como a string "2024-03-05", e essa é a resposta honesta, não uma limitação — a alternativa é adivinhar, e adivinhar é como 03/05/2024 vira março em um país e maio em outro. Convertê-las é uma decisão de quem consome o JSON, que sabe o formato que quer.
A codificação é a última falha silenciosa. Um CSV não traz nenhuma indicação da sua codificação de caracteres, então um arquivo salvo como Windows-1252 e lido como UTF-8 gera caracteres embaralhados exatamente nas linhas com nomes acentuados — e uma marca de ordem de bytes no início, que o Excel adiciona, aparece como caracteres estranhos no primeiro nome de campo se não for tratada. As duas coisas são características do CSV, não de um conversor específico.
Quando você precisa de outra coisa
Para arquivos grandes demais para caber na memória, ou para qualquer coisa automatizada por script, o csvkit foi feito para isso: csvjson --stream data.csv converte aos poucos, csvlook permite ver primeiro o que você tem, e csvclean conserta as linhas irregulares que quebram tudo depois. O Miller — mlr --icsv --ojson cat data.csv — faz o mesmo com bastante velocidade e lida com JSON delimitado por linhas, que é o que a maioria dos pipelines de dados realmente quer.
Quando os tipos importam mais do que a conveniência, faça a conversão em código, com os tipos declarados em vez de inferidos. O pandas do Python com um mapeamento dtype explícito, ou um pequeno script com um esquema, garante que um CEP continue sendo CEP e que um identificador mantenha todos os dígitos — o que nenhuma inferência automática consegue garantir em um arquivo que ela não viu por inteiro.
Perguntas frequentes
Qual formato de JSON devo escolher?
Um array de objetos — [{"name": "Ada", "age": 36}] — serve para quase toda API e biblioteca. Um array de arrays é o mais compacto. Um objeto com chave permite que o código busque registros por ID. O JSON Lines coloca um registro por linha, para ferramentas de streaming, BigQuery e pipelines de logs.
Como são definidos os números e os booleanos?
Uma vez por coluna: uma coluna só vira números quando todos os valores dela são números, então “007” e 7 nunca acabam misturados sob a mesma chave. Valores com zeros à esquerda, e IDs longos demais para o JavaScript guardar com exatidão, continuam como strings. true e false viram booleanos, e células vazias viram null — ou strings vazias, ou são omitidas, como você preferir.
Dá para criar JSON aninhado?
Sim. Com o aninhamento ativado, um cabeçalho como address.city vira {"address": {"city": …}}, e tags.0, tags.1 viram um array.
Meus dados ficam armazenados em algum lugar?
Não. Nada é enviado a lugar nenhum e nada fica armazenado.
E ponto e vírgula, tabulações e outras codificações?
Vírgulas, ponto e vírgula, tabulações e barras verticais são detectados automaticamente, assim como UTF-8, UTF-16 e codificações antigas do Windows, então textos com acentos e não latinos chegam intactos.
E nomes de coluna duplicados ou vazios?
Os duplicados ganham um número (name, name_2) e os cabeçalhos vazios ganham um nome baseado na posição (column_3), então nenhum valor é sobrescrito e você fica sabendo o que mudou.
Bom saber: As datas ficam como o texto do seu arquivo, porque o JSON não tem tipo de data. Arquivos muito grandes ficam limitados pela memória do seu navegador.
Coloque esta ferramenta no seu site
Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.
Mais Ferramentas de planilhas
JSON para CSV
JSON aninhado achatado em colunas limpas
CSV para Excel
CSV em XLSX com números e datas de verdade
Excel para XML
Linhas em XML limpo e bem formado
XML para Excel
Registros XML em uma planilha Excel formatada
Excel para CSV
Qualquer aba em CSV, na codificação que você precisa
ODS para XLSX
Planilhas do LibreOffice como pastas de trabalho do Excel