Conversor CSV para JSON

Converta arquivos CSV para formato JSON instantaneamente. Envie CSV, personalize formato de saída e baixe como array JSON ou objetos sem enviar dados.

Upload
Arraste e solte arquivo aqui
ou clique para procurar
Converter números, booleanos e datas automaticamente
Tratar colunas como 'user.name' como objetos aninhados

Sobre o Conversor CSV para JSON

Conversor CSV para JSON é uma ferramenta online gratuita que converte arquivos CSV (Valores Separados por Vírgula) para formato JSON (JavaScript Object Notation). Envie um arquivo CSV ou cole dados CSV, escolha seu formato de saída e baixe o arquivo JSON convertido—tudo processado localmente no seu navegador para privacidade completa.

Por que todos meus valores CSV aparecem como strings na saída JSON?

Porque é exatamente o que eles são no arquivo de origem — CSV não tem sistema de tipos, cada célula é texto. O conversor por padrão produz strings para fazer ida e volta sem perdas, mas também oferece uma opção de "inferência de tipo" que escaneia cada coluna e converte células em números, booleanos ou null quando a coluna inteira corresponde a um padrão. A inferência de tipo é conveniente mas arriscada: uma coluna de CEPs onde 90% das linhas são numéricas parecerá números mas perderá zeros à esquerda, e uma coluna onde a string "NULL" ou "N/A" significa ausente será convertida de forma imprevisível. Para pipelines de produção, prefira tipos explícitos por coluna: liste quais colunas devem ser número, booleano, data ou string e deixe o conversor aplicar apenas essas regras. A RFC 4180 só descreve os bytes em disco, nunca seu significado semântico, então decisões de tipo sempre vivem acima do formato.

Como o conversor lida com a primeira linha — ela é sempre tratada como cabeçalho?

Por padrão a primeira linha é tratada como cabeçalho e cada célula vira chave JSON. Se seu arquivo não tem linha de cabeçalho, ative "Primeira linha é dado" e o conversor usará chaves genéricas como column_1, column_2 — ou você pode colar uma lista de cabeçalhos personalizada. A RFC 4180 torna a linha de cabeçalho opcional mas recomenda, e a maioria dos CSVs do mundo real inclui uma. Cuidado com cabeçalhos que contêm espaços, pontos ou caracteres especiais: chaves como "Customer ID" ou "Order.Date" produzem JSON válido mas são desajeitadas para acessar programaticamente. O conversor oferece uma etapa opcional "normalizar cabeçalhos" que coloca chaves em minúsculas, substitui espaços por underscores e remove caracteres não alfanuméricos, gerando identificadores snake_case limpos como customer_id e order_date amigáveis a toda linguagem posterior.

Posso produzir JSON aninhado a partir de um CSV plano usando cabeçalhos com notação de ponto?

Sim. Se sua linha de cabeçalho CSV contém caminhos pontuados como user.name, user.address.city e user.address.zip, habilite a opção "Expandir chaves aninhadas" e o conversor construirá um objeto aninhado por linha: {"user":{"name":"Alice","address":{"city":"São Paulo","zip":"01000"}}}. Segmentos numéricos são tratados como índices de array, então items.0.sku e items.1.sku viram {"items":[{"sku":"A"},{"sku":"B"}]}. Este é o inverso do achatamento por notação de ponto usado pela ferramenta JSON-para-CSV, então arquivos fazem ida e volta exatamente quando você usa ambas. Para formas complexas que não cabem em um esquema de caminho simples — uniões heterogêneas, estruturas recursivas — escreva um script de mapeamento personalizado em JavaScript ou Python; o conversor lida com os 80% comuns dos casos, não com todo esquema imaginável.

Qual forma de saída JSON eu obtenho — um array de objetos, um objeto chaveado por ID, ou outra coisa?

O padrão é um array de objetos, um por linha de dados, que é a forma mais universalmente consumida e o formato que MongoDB, Pandas, BigQuery e a maioria das APIs REST esperam. O conversor também oferece duas alternativas. "Objeto chaveado por coluna" usa o valor de uma coluna escolhida como chave, produzindo {"u_1":{...},"u_2":{...}} — útil quando você precisa de semântica de busca por ID, mas requer valores únicos na coluna chave. "NDJSON" emite um objeto JSON por linha sem array envolvente, formato correto para pipelines de streaming (cargas BigQuery, Spark, ClickHouse) e evita o custo de memória de bufferizar o array completo em qualquer lado. Escolha a forma array para leitura humana e intercâmbio; escolha NDJSON para ETL em escala.

Conversor CSV para JSON — Converta arquivos CSV para formato JSON instantaneamente. Envie CSV, personalize formato de saída e baixe como array JSO
Conversor CSV para JSON

Meu CSV usa ponto e vírgula como delimitador e vírgula como marca decimal — o conversor lida com isso?

Sim — e você não deve deixá-lo auto-detectar nesse caso. CSVs exportados por planilhas em regiões que usam vírgula como marca decimal (a maior parte da Europa, América Latina, Vietnã) tipicamente usam ponto e vírgula como separador de campo para evitar ambiguidade. A auto-detecção do conversor tenta escolher o delimitador que dá a contagem de colunas mais consistente, o que geralmente captura ponto e vírgula corretamente, mas você deve sempre verificar olhando a prévia. Se suas células numéricas usam vírgula como separador decimal (1,5 para um e meio), habilite inferência de tipo e selecione a opção "Formato numérico europeu", caso contrário 1,5 será parseado como a string "1,5" em vez do número 1.5. Locais diferentes também discordam sobre o separador de milhares — torne essas regras explícitas.

Como o conversor lida com células vazias, valores ausentes e o texto literal "null"?

Por padrão uma célula vazia vira o valor JSON null, o texto literal "null" permanece string, e uma célula contendo só espaços também é tratada como vazia. Você pode mudar os três comportamentos. "Células vazias como string vazia" produz "" em vez de null — melhor quando consumidores verificam tipos estritamente e rejeitam null. "Tratar NA, N/A, NULL como null" parseia essas strings sentinela comuns como null JSON, útil quando sua fonte usa uma dessas convenções. Para colunas numéricas, uma célula vazia com inferência de tipo habilitada vira null em vez de 0, o que previne o erro comum de somar valores ausentes como zero. RFC 4180 não define semântica para campos vazios, então você deve escolher uma convenção e mantê-la em todo seu pipeline.

Qual o maior CSV que posso converter no navegador sem travar?

Limites práticos são em torno de 50 MB ou 500 000 linhas em um navegador desktop moderno; o parser usa abordagem streaming internamente, mas o JSON resultante tem que ser materializado em memória antes de poder ser exibido ou baixado. Para arquivos na faixa de gigabytes, mude para um conversor streaming de linha de comando: mlr --icsv --ojsonl cat input.csv > output.ndjson do Miller emite NDJSON linha por linha e usa memória constante independente do tamanho do arquivo, COPY (SELECT * FROM read_csv_auto('input.csv')) TO 'out.ndjson' (FORMAT JSON, ARRAY false) do DuckDB é igualmente eficiente e adiciona inferência de tipo, e os módulos csv + json do Python combinados em um pipeline gerador processarão tamanhos arbitrários. Para arquivos muito largos (milhares de colunas) prefira Parquet a JSON — armazenamento orientado a coluna comprime muito melhor e consulta seletivamente sem ler o documento inteiro.

Como escapo caracteres especiais ou converto datas e timestamps ISO corretamente?

Citação e escape em nível CSV seguem a RFC 4180: campos contendo o delimitador, aspas duplas ou quebras de linha devem ser envolvidos em aspas duplas com aspas internas duplicadas, e o conversor lida com isso automaticamente na entrada. Do lado da saída JSON aplicam-se os escapes JSON padrão: \" para aspa dupla, \\ para barra invertida, \n \r \t para caracteres de controle e \uXXXX para qualquer ponto de código Unicode acima da faixa ASCII imprimível. Datas não são tipo JSON nativo, então o conversor as emite como strings ISO 8601 (2026-05-17T00:00:00Z) quando a inferência de tipo data está habilitada — este é o único formato de data universalmente interoperável, aceito pelo construtor Date do JavaScript, fromisoformat do Python, Instant.parse do Java e todos os principais motores SQL. Evite formatos específicos de locale como 17/05/2026 em sua saída.