Conversor de CSV para JSON e de JSON para CSV

Converta CSV em JSON e vice-versa: aspas, qualquer separador, dados aninhados.

Desativado por padrão: tudo continua texto, então algo como 007 não é alterado.

O que esta ferramenta faz

Converte uma tabela em CSV para JSON, e JSON de volta em tabela, sem enviar os dados a lugar nenhum. Um CSV é só texto com um registro por linha e um separador entre os valores; é fácil de gerar e surpreendentemente difícil de ler direito: os valores podem conter o próprio separador, aspas e até quebras de linha. Este conversor segue a especificação do CSV (RFC 4180) e é tolerante com os arquivos bagunçados que planilhas e exportações realmente produzem.

Convertendo CSV em JSON

  1. Cole o CSV, ou abra ou solte um arquivo.
  2. Deixe o "Separador" em automático. A ferramenta olha as primeiras linhas e escolhe a vírgula, o ponto e vírgula, a tabulação ou a barra vertical que as divide sempre no mesmo número de colunas. O Excel no Brasil salva com ponto e vírgula, por causa da vírgula decimal, por isso acertar importa.
  3. Mantenha "A primeira linha é o cabeçalho" para obter uma lista de objetos com o nome de cada coluna, ou desmarque, ou escolha "Lista de listas", para obter listas simples de valores.
  4. Decida se quer converter. Por padrão cada valor continua texto, como foi escrito. Marque "Converter números, true/false e células vazias" e 42 vira número, true vira booleano e uma célula vazia vira null. Os números mantêm o texto exato: 1.50 continua 1.50.
  5. Copie o JSON ou baixe.

Convertendo JSON em CSV

Cole uma lista de objetos, uma lista de listas ou um único objeto. As colunas são todas as chaves que aparecem em algum registro, na ordem em que aparecem pela primeira vez; um registro sem uma chave fica com a célula vazia. Dados aninhados são achatados por uma regra documentada: uma chave dentro de um objeto vira o caminho unido por pontos, então {"user": {"name": "An"}} gera a coluna user.name, e os itens de uma lista são numerados: tags vira tags.0 e tags.1. Se preferir, mantenha a lista inteira como texto JSON em uma célula. Células com o separador, aspas ou quebras de linha vão entre aspas, com as aspas duplicadas, como o padrão exige.

Exemplo

Este CSV tem um valor entre aspas com uma vírgula e uma célula vazia:

name,age,city
An,34,"Ha Noi, VN"
Binh,,Hue

Com os padrões, o resultado é uma lista de dois objetos com todos os valores como texto, então a idade de Binh é uma string vazia. Com a conversão ligada, a idade de An vira o número 34 e a de Binh vira null. No sentido contrário, o JSON {"id": 1, "user": {"name": "An"}, "tags": ["a", "b"]} gera as colunas id, user.name, tags.0 e tags.1 com os valores 1, An, a e b.

Por que a conversão vem desligada

Planilhas transformam texto em número sem avisar e estragam dados: um CEP 01234 perde o zero, um número de cartão ou de pedido de 16 dígitos vira notação científica, um código como 1E5 vira 100000. Esta ferramenta não adivinha, a menos que você peça. Mesmo com a conversão ligada, um valor com zero à esquerda, ou um inteiro de mais de 15 dígitos, continua texto porque o JavaScript não consegue guardá-lo com exatidão.

Erros comuns

  • Separador errado. Tudo cai em uma só coluna. Deixe no automático ou escolha o separador à mão.
  • Acentos quebrados no Excel. O Excel precisa de uma marca BOM para reconhecer UTF-8. Marque "Adicionar marca BOM" ao converter para CSV para o Excel.
  • Célula que começa com = + - ou @. O Excel a trata como fórmula ao abrir o arquivo. Confira dados de fontes não confiáveis antes de abri-los em uma planilha.
  • Aspas sem fechar. Uma aspa solta pode engolir o resto do arquivo. A ferramenta avisa e indica a linha.

Limites

Entrada de até 5 milhões de caracteres ou 10 MB se for um arquivo. A caixa de resultado mostra os primeiros 200 000 caracteres de resultados muito grandes; copiar e baixar sempre incluem tudo. Datas não são convertidas: continuam texto.

Perguntas frequentes

Meus dados são enviados?

Não. A conversão roda no navegador; o arquivo é lido no seu dispositivo e nada é enviado a lugar nenhum.

Como ele descobre o separador?

Divide as primeiras linhas com cada candidato (vírgula, ponto e vírgula, tabulação e barra vertical), ignora os que estão entre aspas e escolhe o que dá o mesmo número de colunas em mais linhas. Você sempre pode escolher um.

Como objetos e listas aninhados viram colunas?

As chaves aninhadas são unidas por pontos (address.city) e os itens de lista são numerados (tags.0, tags.1). Escolha "Manter como JSON em uma célula" para não achatar as listas.