Conversor de CSV para JSON
Faça upload de um arquivo CSV ou cole os dados para converter para o formato JSON
Solte o arquivo CSV aqui, ou clique para selecionar
O que é CSV para JSON?
CSV para JSON é uma ferramenta online de conversão de formato de dados que converte dados CSV (valores separados por vírgulas) para o formato JSON (notação de objetos JavaScript).
CSV é um formato de dados tabular comum, amplamente utilizado em planilhas e exportações de bancos de dados. JSON é o formato de troca de dados mais popular em aplicações web modernas, conhecido por sua estrutura clara e fácil análise.
Com esta ferramenta, você pode converter rapidamente dados CSV em arrays ou objetos JSON para uso em programação e processamento de dados.
Como usar
Como usar
- Cole ou digite dados CSV no painel de entrada à esquerda
- Selecione o delimitador adequado (vírgula é o padrão)
- Escolha se a primeira linha deve ser usada como nomes de campo
- O painel à direita gera automaticamente o resultado em JSON
Notas sobre análise de CSV
- Verifique o delimitador, o tratamento de aspas e as configurações de linha de cabeçalho antes de confiar na saída JSON.
- Arquivos CSV grandes podem conter linhas em branco, vírgulas embutidas ou quebras de linha dentro de células entre aspas. Visualize algumas linhas após a conversão.
Casos de uso
Princípio técnico
A análise de CSV segue a gramática IETF RFC 4180: cada registro termina com CRLF (alguns dialetos aceitam LF ou CR), cada registro contém campos separados por um delimitador (vírgula na RFC, mas TSV, ponto e vírgula e pipe são variantes amplamente utilizadas), e qualquer campo que contenha o delimitador, um CR, um LF ou uma aspa dupla DEVE ser envolvido em aspas duplas com aspas internas escapadas por duplicação (Hello "world" se torna "Hello ""world"""). O analisador desta página é uma máquina de estados com quatro estados — field_start, in_unquoted, in_quoted, after_quote — e processa a entrada em uma única passagem O(n) sobre o fluxo de caracteres, de modo que um CSV de 10 MB com 100.000 linhas é concluído bem menos de um segundo em um laptop típico, sem nunca alocar um array de tokens intermediário por linha. A codificação requer tratamento explícito: um BOM UTF-8 (EF BB BF) no início do arquivo é removido antes da análise, caso contrário o primeiro nome de cabeçalho começaria silenciosamente com o ponto de código invisível U+FEFF e as verificações de igualdade do JSON.parse downstream falhariam. Exportações do Excel no Windows ainda emitem CRLF e frequentemente UTF-8 com BOM, enquanto o Numbers do macOS e a maioria das ferramentas Unix usam LF sem BOM por padrão. Planilhas europeias comumente exportam arquivos delimitados por ponto e vírgula porque a vírgula é um separador decimal em muitas localidades (49,90 EUR em vez de 49.90), por isso o seletor de delimitador tem vírgula como padrão, mas expõe tabulação, ponto e vírgula e pipe como escolhas de primeira classe. A alternância primeira-linha-como-cabeçalho altera o formato de saída de um array de objetos (chaves de cabeçalho -> valores string) para um array de arrays, correspondendo aos dois padrões comuns de ingestão para código downstream. Os valores dos campos são emitidos como strings, não como tipos inferidos — CSV não possui esquema, então 01234 (um ID com zero à esquerda), 1e10 (uma string com aparência de número de telefone que o JSON.parse converteria para número) e 2024-13-45 (uma data malformada) todos permanecem inalterados. Isso é intencional: uma API tipada downstream pode aplicar zod, Joi ou uma camada de coerção manual com regras explícitas, mas não pode recuperar um zero à esquerda que o conversor já removeu. A saída é gerada via JSON.stringify(rows, null, 2) e renderizada através de um realçador de sintaxe; o CSV de origem é lido com FileReader.readAsText() em um Blob, nunca enviado a um backend, então exportações de RH, registros financeiros e listas de clientes podem ser reformulados sem sair da sessão do navegador.
- Gramática RFC 4180: campos com delimitador/CR/LF/" devem ser colocados entre aspas; aspas internas são duplicadas como "".
- Máquina de estados O(n) de passagem única com estados: field_start, in_unquoted, in_quoted, after_quote.
- BOM UTF-8 (EF BB BF / U+FEFF) é removido no início do arquivo para manter as chaves de cabeçalho limpas.
- Planilhas europeias frequentemente usam ; como delimitador porque , é a marca decimal nas configurações de localidade.
- Primeira-linha-como-cabeçalho alterna a saída entre Array<Record<string,string>> e Array<Array<string>>.
- Todos os valores de campo permanecem strings; IDs com zero à esquerda como 01234 sobrevivem apenas porque nenhuma inferência de tipo é executada.
- FileReader.readAsText() processa o Blob localmente; nada é enviado - seguro para exportações de RH/finanças/staging.
Exemplos
CSV básico com cabeçalho -> array JSON de objetos
CSV input:
name,age,city
Alice,28,New York
Bob,35,London
Carol,42,Tokyo
JSON output:
[
{ "name": "Alice", "age": "28", "city": "New York" },
{ "name": "Bob", "age": "35", "city": "London" },
{ "name": "Carol", "age": "42", "city": "Tokyo" }
]Campos entre aspas com vírgulas internas
CSV input:
id,product,description
1,"Notebook, A5","Hard cover, 200 pages"
2,Pen,"Black ink, 0.5mm"
JSON output:
[
{ "id": "1", "product": "Notebook, A5", "description": "Hard cover, 200 pages" },
{ "id": "2", "product": "Pen", "description": "Black ink, 0.5mm" }
]TSV (delimitado por tabulação) sem cabeçalho
TSV input (delimiter = Tab, header off):
101 Alice 98.5
102 Bob 87.0
103 Carol 92.3
JSON output:
[
["101", "Alice", "98.5"],
["102", "Bob", "87.0"],
["103", "Carol", "92.3"]
]Delimitador ponto e vírgula (exportações de planilhas europeias)
CSV input (delimiter = ;):
product;price_eur;stock
Keyboard;49,90;120
Mouse;19,90;345
JSON output:
[
{ "product": "Keyboard", "price_eur": "49,90", "stock": "120" },
{ "product": "Mouse", "price_eur": "19,90", "stock": "345" }
]
Note: números permanecem como strings - faça o cast no seu código posterior.Perguntas frequentes
Quais variantes de CSV são suportadas?
CSV padrão RFC 4180: separador por vírgula, campos entre aspas duplas e aspas duplas duplicadas para escape. Separadores por tabulação (TSV) e ponto e vírgula funcionam mudando o separador. Diferentes terminadores de linha (LF/CRLF/CR) são tratados automaticamente.
Como os cabeçalhos são tratados?
Se você ativar 'a primeira linha é cabeçalho', o parser usa cada célula do cabeçalho como chave JSON daquela coluna — produzindo um array de objetos. Com cabeçalhos desativados, o parser produz um array de arrays. Células de cabeçalho vazias recebem uma chave numérica como placeholder.
Como os tipos são inferidos?
Por padrão, tudo é string. Ative 'auto type' para tentar interpretar números, booleanos (true/false) e null. Números com zeros à esquerda (00123, 0042) viram strings para não perder o prefixo — use isso para IDs e CEPs.
E se um campo contém vírgula ou quebra de linha?
Coloque o campo entre aspas duplas: "Smith, John" ou "linha um\nlinha dois". Aspas duplas embutidas ficam duplicadas: "Ele disse ""oi""". O parser lida com tudo isso; se uma linha estiver quebrada, geralmente é por causa de aspas desbalanceadas.
A conversão é feita localmente ou em servidor?
Localmente. O parsing roda no seu navegador usando JavaScript. O CSV colado não sai da página. Arquivos grandes podem deixar o navegador lento; se uma colagem ultrapassar dezenas de MB, divida antes de processar.
Preserva a ordem das colunas?
Sim — cada linha vira um objeto JSON cuja ordem das chaves segue a ordem dos cabeçalhos do CSV, e JSON.stringify nas engines modernas preserva a ordem de inserção. Se sua ferramenta seguinte ler JSON sem preservar essa ordem, é uma limitação dela.
Como lido com datas?
As datas continuam como strings. A inferência automática não interpreta formatos arbitrários de data porque não há padrão sem ambiguidade (1/2/2024 é 2 de janeiro nos EUA e 1 de fevereiro na Europa). Converta as datas para ISO 8601 (YYYY-MM-DD) antes de importar se você precisar de objetos Date nativos depois.