Como converter CSV para JSON
CSV (Comma-Separated Values) e o formato mais simples para dados tabulares, cada planilha pode exporta-lo. JSON (JavaScript Object Notation) e o formato padrao para APIs web e aplicacoes modernas. Converter entre eles e uma das tarefas de dados mais comuns no desenvolvimento. Um conversor baseado em navegador lida com todo o trabalho localmente sem enviar seus dados para um servidor.
Quando voce precisa de CSV para JSON
- Carregar dados em uma aplicacao web: a maioria dos frameworks JavaScript trabalha com JSON nativamente, nao CSV
- Cargas uteis de API: se voce tem dados em uma planilha que precisam ir para um endpoint de API, eles precisam ser JSON
- Importacoes de banco de dados: muitos bancos de dados NoSQL (MongoDB, Firebase) aceitam JSON diretamente
- Arquivos de configuracao: transformar uma planilha de configuracoes em um arquivo de configuracao JSON
- Analise de dados: converter dados exportados em um formato que suas ferramentas possam processar
- Mutacoes GraphQL: inserir registros em massa de uma planilha via um endpoint GraphQL
- Fixtures de teste: transformar uma lista de casos de teste em uma planilha em JSON para testes automatizados
- Cargas uteis de webhook: quando um servico espera JSON mas voce tem dados em uma planilha
- Arquivos de internacionalizacao (i18n): uma planilha de traducao com colunas chave/locale se torna um catalogo JSON
- Migracao de sistemas legados: sistemas antigos frequentemente exportam CSV; sistemas novos frequentemente consomem JSON
- Carregar dados em LLMs: JSON estruturado e mais facil para o ChatGPT, Claude raciocinar do que CSV
Como o CSV se torna JSON
Um arquivo CSV:
name,age,city
Alice,30,New York
Bob,25,London
Torna-se um array JSON de objetos:
[
{"name": "Alice", "age": "30", "city": "New York"},
{"name": "Bob", "age": "25", "city": "London"}
]
A primeira linha (cabecalhos) se torna as chaves. Cada linha subsequente se torna um objeto.
Como converter
- Cole seus dados CSV: insira dados separados por virgula com uma linha de cabecalho.
- Escolha seu delimitador: selecione virgula, ponto-e-virgula, tabulacao ou pipe. A ferramenta detecta automaticamente na maioria dos casos.
- Copiar ou baixar: revise a saida JSON e copie-a para sua area de transferencia ou baixe-a como um arquivo
.json.
Uma breve historia de CSV e JSON
CSV e o formato mais antigo por decadas. O conceito de texto separado por virgulas remonta aos anos 1960 e 1970 como uma forma de trocar dados entre programas mainframe. IBM Fortran (1972) suportava E/S direcionada por lista que produzia saida separada por virgulas. CSV nunca foi formalmente padronizado ate o RFC 4180 em 2005, momento em que bilhoes de arquivos CSV ja existiam com variacoes sutis (regras de citacao, finais de linha, codificacao).
JSON chegou muito mais tarde: Douglas Crockford o especificou em 2001, RFC formal 4627 em 2006, ECMA-404 em 2013. JSON foi projetado para a web; CSV foi projetado para processamento em lote de dados em mainframes. Os dois formatos tem forcas diferentes:
| Aspecto | CSV | JSON |
|---|---|---|
| Estrutura | Tabela plana (linhas + colunas) | Aninhada, hierarquica |
| Tipos | Sem tipo (tudo e texto) | Tipado (string, numero, bool, null, array, objeto) |
| Cabecalhos | Convencao primeira linha | Nomes de campo por objeto |
| Tamanho | Compacto para dados tabulares | Mais verboso, inclui estrutura |
| Ferramentas | Excel, todas as planilhas | Cada linguagem de programacao moderna |
| Streaming | Linha por linha facil | Analise de arquivo inteiro por padrao (mas JSON Lines existe) |
| Spec estrita | RFC 4180 (2005), frequentemente ignorada | RFC 8259 (2017), estrita |
A conversao de CSV para JSON e essencialmente uma traducao de dados planos orientados a linha em notacao de objeto chave-valor. A maior parte da dificuldade esta em lidar com casos extremos (valores entre aspas, delimitadores incorporados, codificacoes nao UTF-8) que a especificacao CSV nao previu.
Lidando com dados CSV complicados
Valores entre aspas: quando um valor contem o caractere delimitador (como um endereco com uma virgula), ele deve ser envolvido em aspas duplas: "New York, NY". Bons conversores lidam com isso corretamente.
Valores vazios: celulas vazias se tornam strings vazias em JSON ("field": ""). Se voce precisar delas como null, pode precisar pos-processar a saida.
Valores numericos: CSV nao tem tipos de dados. Tudo e texto. A saida JSON tera numeros como strings ("30" nao 30). Se sua aplicacao precisa de numeros reais, analise-os apos a conversao.
Quebras de linha em valores: alguns arquivos CSV tem valores multilinhas (entre aspas). Nem todos os conversores lidam com isso, teste com seus dados especificos.
Aspas escapadas: uma aspa dentro de um valor entre aspas e escapada duplicando-a: "Ela disse ""ola""". A maioria dos analisadores lida com isso corretamente.
Espacos a direita: espacos extras em cabecalhos como name ,age, city criam chaves desorganizadas. Bons conversores cortam por padrao; alguns preservam o espaco em branco literalmente.
Marcas de ordem de bytes: um BOM UTF-8 no inicio do arquivo pode aparecer como os primeiros tres caracteres do primeiro cabecalho. Alguns conversores removem o BOM; outros nao.
Diferentes finais de linha: arquivos CSV do Windows tem CRLF, Unix tem LF, Macs antigos tinham CR. Analisadores robustos lidam com todos os tres.
Variantes de formato de saida
Conversores de CSV para JSON frequentemente oferecem varias opcoes de saida:
| Saida | Exemplo | Melhor uso |
|---|---|---|
| Array de objetos | [{"a":1},{"a":2}] | Respostas de API, padrao |
| Objeto de objetos (com chave pela primeira coluna) | {"id1":{"name":"x"},"id2":{...}} | Tabelas de pesquisa, registros com chave por ID |
| Array de arrays | [["a","b"],[1,2],[3,4]] | Dados de linha brutos preservando a ordem |
| Colunar | {"a":[1,3],"b":[2,4]} | Analise estatistica (compativel com pandas) |
| JSON Lines (NDJSON) | {"a":1}\n{"a":2} | Streaming, processamento de logs |
| Aninhado por cabecalho | [{"address":{"city":"NY"}}] de address.city | Dados aninhados de CSV plano |
O padrao e array de objetos, que funciona para quase todos os cenarios de API web. JSON Lines e util se voce tem milhoes de linhas e precisa de processamento em streaming.
Inferencia de tipo
Alguns conversores oferecem inferencia de tipo:
- Off (padrao seguro): cada valor e uma string. Previsivel, mas requer que o codigo receptor analise.
- Auto: detectar numeros, booleanos, null, datas.
"30"se torna30,"true"se tornatrue,""se tornanull. Conveniente, mas sujeito a erros (um CEP como"00525"se torna525). - Dirigido por esquema: forneca um esquema JSON ou dicas de tipo de coluna; converta cada coluna em seu tipo especificado. Melhor para dados de producao.
Para uso interno onde voce controla os dados, a auto-inferencia economiza tempo. Para entrada nao confiavel, deixe os tipos como strings e analise explicitamente em seu codigo.
Armadilhas comuns
- Zeros iniciais perdidos: uma coluna de numeros de telefone, CEPs ou IDs de produto com zeros iniciais (
00525,09876) se torna um numero perdendo o zero, a menos que voce o mantenha como string. Coloque essas colunas entre aspas ou desative a inferencia de tipo. - Injecao de formula do Excel: um valor CSV comecando com
=(=SUM(...)) era originalmente uma formula de planilha. Converter para JSON mantem o texto literal, mas se voce reimportar para uma planilha, a formula executa. Remova=,+,-,@iniciais para CSVs enviados por usuarios. - Incompatibilidade de codificacao: um CSV exportado do Excel no Windows e frequentemente Windows-1252 ou Latin-1, nao UTF-8. Caracteres nao-ASCII (acentos, emoji) se tornam mojibake na conversao. Salve o CSV como UTF-8 primeiro.
- Contagem de colunas inconsistente: algumas linhas tem mais ou menos campos do que o cabecalho. Analisadores estritos falham; os tolerantes preenchem ou truncam. Verifique se seus dados tem forma consistente.
- Cabecalhos duplicados:
name, name, agee ambiguo. A maioria dos conversores mantem apenas o ultimo valor com o nome duplicado; alguns os tornamname,name_2. Renomeie na fonte. - Cabecalhos com pontos ou colchetes: uma coluna
address.citypode ser interpretada como JSON aninhado ({"address":{"city":...}}) por alguns conversores. Escolha o modo de saida correto. - Caracteres de citacao mistos: algumas fontes usam aspas simples ou aspas tipograficas (curvadas) em vez de aspas duplas retas. A maioria dos conversores espera duplas retas.
- Nova linha final: um CSV terminando com
\npode ou nao produzir um objeto vazio extra. Apare o espaco em branco final. - Linha de cabecalho faltando: se seu CSV nao tem cabecalho, o conversor pode usar a primeira linha de dados como chaves (errado). Adicione cabecalhos ou use saida de array de arrays.
- Arquivos muito grandes: um CSV de 100 MB produz um JSON de 200+ MB. A memoria do navegador pode ter dificuldades. Para arquivos grandes, use JSON Lines (NDJSON) e processe linha por linha.
Dicas
- Verifique seus cabecalhos: a primeira linha deve ser nomes de coluna limpos e unicos. Espacos, caracteres especiais ou cabecalhos duplicados criarao chaves JSON desorganizadas.
- Verifique o delimitador: CSVs europeus frequentemente usam ponto-e-virgula em vez de virgulas (porque as virgulas sao usadas como separadores decimais em muitos paises europeus). Se a conversao parecer errada, tente um delimitador diferente.
- Formate a saida: apos a conversao, execute o JSON atraves de um formatador para torna-lo legivel antes de usa-lo em seu projeto.
- Verifique os resultados aleatoriamente: compare algumas linhas da saida JSON com o CSV original para garantir que o mapeamento esta correto, especialmente para arquivos com muitas colunas.
- Salve como UTF-8 do Excel: no Excel, escolha «CSV UTF-8 (delimitado por virgula)» em vez de simplesmente «CSV» para evitar problemas de codificacao. Apple Numbers e Google Sheets padrao UTF-8.
- Use um linter CSV primeiro para arquivos grandes: ferramentas como
csvlintoucsvkitcapturam linhas malformadas antes de voce converter. - Amostre primeiro, converta depois: para um CSV de 50.000 linhas, converta as primeiras 100 linhas como teste, verifique a forma de saida, depois converta o resto.
- Mantenha os originais: nunca exclua o CSV de origem. Se seu JSON parecer errado, voce precisa do original para reprocessar.
- Para dados profundamente aninhados, escreva um pequeno script: uma conversao CSV para JSON de uma linha se encaixa em ~80% dos casos. Para aninhamento complexo (arrays de itens por linha, campos condicionais), Python com pandas + transformacao personalizada e mais flexivel do que qualquer conversor geral.
Privacidade e dados confidenciais
O conversor CSV para JSON roda inteiramente no seu navegador. Os dados que voce cola, o processamento intermediario e o JSON de saida ficam todos no seu dispositivo. Nada e enviado para um servidor, registrado ou compartilhado com ninguem.
Isso importa porque os CSVs que voce converte frequentemente contem dados sensiveis: listas de clientes com enderecos de e-mail e numeros de telefone, registros de funcionarios com salarios, transacoes financeiras, dados de pipeline de vendas, leads de marketing, analises internas de produtos, registros medicos exportados de sistemas EHR, notas de estudantes, historico de pagamentos. Conversores de CSV para JSON em nuvem registram cada colagem, as vezes os retem para «melhoria do servico», e estiveram envolvidos em vazamentos reais de dados onde listas de clientes coladas vazaram para atacantes monitorando os logs. Um conversor baseado em navegador tem exposicao zero: os dados nunca saem da sua maquina.
A conversao baseada em navegador tambem funciona offline depois que a pagina e carregada, util para processar dados em avioes, em ambientes seguros sem acesso a internet, ou em qualquer lugar onde voce nao pode ou nao deveria colar dados de clientes ou financeiros em um servico de terceiros.
Perguntas frequentes
O que acontece com a linha de cabeçalho?
A primeira linha é usada como chaves para os objetos JSON. Cada linha seguinte vira um objeto com essas chaves. Por exemplo, um cabeçalho "name,age" com uma linha "Alice,30" se torna {"name":"Alice","age":"30"}.
Quais delimitadores são suportados?
Vírgula, ponto-e-vírgula, tabulação e pipe são todos suportados. A ferramenta pode detectar automaticamente qual delimitador seus dados usam, ou você pode selecioná-lo manualmente.
Lida com vírgulas dentro de valores?
Sim. Valores envolvidos em aspas duplas (como "New York, NY") são tratados corretamente, a vírgula dentro das aspas é considerada parte do valor, não um separador.
Meus dados são enviados a um servidor?
Não. Toda a conversão acontece no seu navegador. Seus dados nunca saem do seu dispositivo.