Conversor de CSV para JSON

Transforme uma tabela CSV em um array JSON de objetos, inteiramente no seu navegador.

Roda inteiramente no seu navegador. Nada é enviado, registrado ou armazenado.

Cole uma exportação de planilha e receba um array JSON de volta, um objeto por linha, com as chaves vindas dos nomes das colunas. Isso acontece no seu navegador, então um arquivo cheio de registros de clientes, salários ou itens de pedido nunca sai da sua máquina.

Como funciona

O documento é lido caractere a caractere seguindo a RFC 4180, que é o que permite a um campo conter o delimitador, uma quebra de linha ou uma aspa: tudo dentro de aspas duplas é literal, e uma aspa duplicada é uma aspa. Dividir por vírgulas e quebras de linha quebraria no primeiro campo de endereço com vírgula.

A primeira linha vira os nomes das colunas, a menos que você diga o contrário, caso em que cada linha volta como array em vez de objeto. Um nome em branco vira column_1, column_2 e assim por diante, por posição, e um nome repetido ganha um sufixo numérico, porque duas chaves idênticas em um objeto significam que a primeira coluna some em silêncio.

Todo valor chega como string, porque o CSV não tem tipos. Ler os tipos em vez disso é uma caixa de seleção, e não o padrão: a inferência é o que transforma um código de produto 007 no número 7. Quando está ligada, ela é deliberadamente cautelosa — um zero à esquerda, um sinal de mais à esquerda ou um espaço em volta mantêm o valor como string, e um inteiro grande demais para sobreviver como double também.

Exemplos

Caso Entrada Resultado
Um campo entre aspas contendo o delimitador name,city "Doe, John",Geneva [ { "name": "Doe, John", "city": "Geneva" } ]

Perguntas frequentes

O meu arquivo usa ponto e vírgula. Isso ainda é CSV?

É, e é o caso normal em boa parte da Europa e no Brasil. Uma planilha que salva CSV em uma configuração que escreve decimais com vírgula não pode também usar a vírgula como separador, então ela usa o ponto e vírgula. Escolha-o na lista de delimitadores; a tabulação e a barra vertical estão ali pelo mesmo motivo.

Por que o meu CEP perdeu o zero à esquerda?

Ele não perdeu, a não ser que você tenha pedido inferência de tipos. Sem ela, todo valor continua string exatamente como foi escrito. Com ela ligada, valores que começam por zero continuam sendo strings justamente por esse motivo, junto de qualquer coisa que comece por mais ou venha com espaços.

O que acontece com uma linha com o número errado de campos?

Uma linha curta é completada com strings vazias, porque um campo vazio no fim é rotineiramente descartado por quem escreveu o arquivo. Uma linha longa mantém os valores extras sob nomes posicionais em vez de descartá-los, então nada some sem você ver.

O meu arquivo é enviado para algum lugar?

Não. A página carrega um pequeno script que analisa o documento localmente. Você pode se desconectar da rede depois que a página carregar e a ferramenta continua funcionando.

Bom saber

  • Tudo acontece no seu navegador. O documento não é enviado, não é registrado e não é armazenado.
  • As aspas seguem a RFC 4180: um campo é posto entre aspas quando contém o delimitador, uma aspa dupla ou uma quebra de linha, e uma aspa dupla dentro de um campo entre aspas é escrita duas vezes. Barras invertidas são caracteres comuns e nunca são tratadas como escapes.

Fontes

Todas as ferramentas de Código