Converter CSV para JSON e de volta sem perder dados
CSV é uma tabela de texto simples: um registro por linha, com os campos separados por um delimitador, geralmente a vírgula. Ele quebra quando um campo contém o delimitador, aspas duplas ou uma quebra de linha, porque o leitor precisa distinguir estrutura de conteúdo. Siga as regras de aspas, confira o delimitador e a linha de cabeçalho, e mantenha os números com zeros à esquerda como texto. O restante deste artigo explica o que uma ida e volta pode e não pode preservar.
CSV para JSONPreciso de CSV em JSON, ou o inversoUse de graçaO que é realmente um arquivo CSV
O CSV não tem um padrão único e oficial, mas a RFC 4180 descreve a forma comum, e a maioria dos leitores a segue. Suas regras principais cabem em uma lista curta:
- Cada registro fica em sua própria linha, e a RFC determina que as linhas terminem com retorno de carro e avanço de linha (CRLF).
- Os campos são separados por vírgulas.
- Um campo que contém vírgula, aspas duplas ou quebra de linha fica entre aspas duplas.
- Aspas duplas dentro de um campo entre aspas são escritas como duas aspas duplas.
Assim, a linha 1001,"Smith, Ann",02134 tem três campos, porque a vírgula dentro das aspas faz parte do conteúdo. Um separador que corta em toda vírgula encontra quatro. O leitor do fixmint aplica essas regras: um campo entre aspas pode conter o delimitador, quebras de linha e aspas duplicadas, e uma aspa não fechada é reportada com a linha onde ela começa.
Por que o separador muda
A vírgula é o padrão da RFC, mas onde ela é o separador decimal, e 1,5 significa um e meio, as planilhas costumam salvar CSV com ponto e vírgula. Arquivos separados por tabulação (TSV) evitam o conflito na maioria dos dados, porque tabulações raramente aparecem dentro de textos.
O menu de separador oferece Automático, Vírgula, Ponto e vírgula, Tabulação e Barra vertical. Automático lê as primeiras dez linhas, conta cada candidato fora das aspas e escolhe o que tem a contagem por linha mais consistente. Escolha o separador você mesmo quando o automático errar.
Convertendo no fixmint
O exemplo a seguir usa as opções padrão da ferramenta CSV para JSON.
Exemplo prático
Cole este CSV, com a opção "A primeira linha é um cabeçalho" marcada:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Com "Converter números" desativada e a indentação do JSON em 2 espaços, a ferramenta retorna:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Com "Converter números" ativada, id e zip 10001 viram números, e 02134 continua como texto.
Passo a passo
- Cole o CSV ou arraste um arquivo .csv, .tsv, .txt ou .json.
- Confira se "A primeira linha é um cabeçalho", o separador e "Converter números" estão corretos. Escolha uma indentação de JSON de 2 espaços, Tabulação ou Minificado.
- Copie o resultado ou baixe-o como .json.
Mantenha os números como texto
Os números JSON não podem ter zeros à esquerda, então 02134 não é um número JSON válido. CEPs, números de telefone e códigos de produto precisam continuar como texto, ou o zero desaparece. Com "Converter números" ativada, a ferramenta converte 10001, mas mantém 02134 como string. A opção vem desativada por padrão. Ela converte apenas valores com ponto como separador decimal, então 1,5 em um arquivo com ponto e vírgula permanece como digitado.
Identificadores longos também exigem cuidado. O JavaScript, que roda a maior parte do JSON no navegador, armazena números como valores de ponto flutuante de 64 bits. Números inteiros são exatos apenas até 9.007.199.254.740.991, que é dois elevado a 53, menos 1. O número 12345678901234567890 vira 12345678901234567000 quando um programa JavaScript o lê. A ferramenta grava os dígitos como digitados, mas um programa que analisa o JSON em JavaScript vai arredondá-los. Mantenha os IDs como strings. O Formatar JSON também mantém esses números exatamente como digitados e informa quantos manteve.
JSON aninhado e a volta para CSV
CSV é plano, e JSON pode ser aninhado. Ao converter JSON para CSV, é criada uma coluna para cada chave de todos os objetos, na ordem em que cada chave aparece pela primeira vez. Um objeto ou lista aninhado vai para a célula como texto JSON, um null vira célula vazia, e true e false são escritos como palavras. As linhas são separadas por CRLF, e um campo só é colocado entre aspas quando contém o delimitador, aspas, quebra de linha ou espaços nas extremidades.
A entrada que começa com [ ou { é lida como JSON. O botão com seta alterna a direção, identificado como CSV → JSON ou JSON → CSV. Na direção JSON → CSV, as opções de saída mostram um menu de separador e a opção Para Excel.
Uma ida e volta perde informações. Um null e uma string vazia viram, ambos, célula vazia, e o aninhamento não volta, então guarde o JSON original se precisar da estrutura.
Excel, UTF-8 e a marca de ordem de bytes (BOM)
Um arquivo CSV são bytes, e o leitor precisa conhecer a codificação. O UTF-8 comporta letras acentuadas e outros alfabetos. Uma marca de ordem de bytes (BOM), três bytes no início do arquivo, indica que o arquivo é UTF-8. Sem ela, alguns programas de planilha leem o arquivo em uma página de código local, e letras acentuadas viram caracteres estranhos. As planilhas também costumam transformar 02134 em 2134 ao abrir um CSV.
A opção Para Excel adiciona a BOM apenas ao CSV baixado, nunca ao texto copiado, e só na direção JSON → CSV. O leitor remove a BOM da entrada, então um arquivo que já tem uma converte sem erro.
Casos especiais
- Linhas irregulares. Com cabeçalho ativado, uma linha curta é completada com valores vazios, e uma linha mais longa mantém os valores extras como column_N. O resultado informa quantas linhas diferem do cabeçalho.
- Cabeçalhos repetidos ou vazios. Um nome repetido recebe _2, _3 e assim por diante, e um nome vazio vira column_N. As duas mudanças impedem que duas chaves se sobrescrevam.
- Aspas curvas. Aspas inteligentes de processadores de texto não são aspas de CSV, então um campo como “Smith, Ann” se divide na vírgula. Converta-as antes com Corrigir texto colado ou conforme descrito em o guia sobre aspas curvas.
- Quebras de linha dentro de aspas. Um campo que ocupa duas linhas é um único registro, mas a Remover linhas duplicadas divide a entrada em cada quebra de linha, então trataria as duas metades como linhas separadas. Converta para JSON e compare os objetos, ou confira manualmente. A ferramenta continua útil para listas com um valor por linha.
- Arquivos grandes. A caixa de resultado mostra os primeiros 100.000 caracteres, mas Copiar e o download incluem a saída inteira.
- JSON inválido. O conversor informa a linha e a coluna do erro, com um acento circunflexo sob o caractere. O Formatar JSON explica os deslizes mais comuns, e o guia de erros de JSON os cobre com mais detalhes.
Espaços soltos ao redor dos campos, linhas em branco no meio do arquivo e aspas usadas de forma inconsistente causam a maioria dos problemas de CSV, antes mesmo de o separador importar. Use o Limpador de CSV primeiro e depois converta.
Traduzido do Original em inglês com auxílio de IA.
Comentários
Ainda não há comentários. Seja o primeiro.


