CSV ⇄ JSON
Cole qualquer um dos formatos — o outro aparece enquanto você digita, nos dois sentidos.
Como usar
- Cole CSV (ou TSV / texto separado por ponto e vírgula) ou um array JSON na caixa — o resultado é desenhado enquanto você digita, sem botão para pressionar. A direção é detectada a partir do primeiro caractere e mostrada acima do resultado, para você conferir.
- Se a direção for detectada errado, escolha CSV → JSON ou JSON → CSV. Se tudo cair em uma única coluna, troque o delimitador de “Automático” pelo seu caractere. Desligue “A primeira linha é cabeçalho” quando o arquivo começar pelos dados — assim você recebe um array de arrays em vez de objetos.
- Copie ou baixe o resultado. Os dois usam exatamente o texto que aparece na tela; o arquivo se chama data.json ou data.csv. “Carregar exemplo” preenche um exemplo para a direção ativa.
Exemplo
Entrada (CSV)
order_id,customer,note,zip,amount,shipped 1001,"Souza, Ana",pediu reembolso,00501,89.90,true 1002,Bruno Lima,,10001,42.00,false
Saída (JSON)
[ { "order_id": 1001, "customer": "Souza, Ana", "note": "pediu reembolso", "zip": "00501", "amount": 89.9, "shipped": true }, { "order_id": 1002, "customer": "Bruno Lima", "note": "", "zip": 10001, "amount": 42, "shipped": false } ]
Quatro coisas para conferir nessa saída: a vírgula dentro de “Souza, Ana” ficou dentro do valor em vez de dividir a linha; o CEP 00501 manteve o zero à esquerda, pois de outra forma viraria 501; 10001 virou número, então a coluna de CEP termina com tipos mistos — desligue “Detectar números e booleanos” para manter todos os valores como texto; e 89.90 saiu como 89.9, porque um número JSON não pode carregar zero final.
Regras, limites e problemas conhecidos
- Sem upload de arquivo, arrastar e soltar ou busca por URL: cole o texto. Uma área de soltar consumiria a altura de que o resultado precisa, e ler arquivos corretamente implica lidar com codificações que não são UTF-8 — o visualizador de CSV já faz isso (GB18030, Big5, Windows-1256), então abra o arquivo lá e copie o texto.
- A entrada é limitada a 1.000.000 de caracteres; acima de 200.000 o resultado espera até você parar de digitar e avisa. Acima do limite rígido você recebe um erro explícito — a entrada nunca é truncada silenciosamente.
- A detecção de tipos é feita célula a célula e de forma conservadora: só true / false / null (apenas em minúsculas) e números JSON estritos são convertidos. Inteiros com zero à esquerda (00501) e números com 16 dígitos ou mais (IDs longos) sempre permanecem texto, e células vazias continuam "" em vez de virar null.
- Um número JSON não pode manter zeros finais, então 89.90 vira 89.9 e 42.00 vira 42. Desligue “Detectar números e booleanos” para manter cada valor exatamente como foi escrito.
- A quantidade de colunas é a da linha mais larga, então nenhum campo é descartado: linhas curtas são preenchidas com strings vazias e campos extras recebem um nome gerado automaticamente. Linhas que não batem com a primeira são listadas por número.
- Nomes de coluna duplicados recebem _2, _3 … em vez de se sobrescreverem — sobrescrever perderia uma coluna inteira silenciosamente. Cabeçalhos ausentes ou vazios viram column_N. Esses nomes são legíveis por máquina e iguais em todos os idiomas da interface.
- JSON → CSV aceita um array de objetos (o caso principal), um array de arrays (colunas posicionais), um único objeto e um array de valores simples (uma coluna “value”). Qualquer outra coisa — um valor no nível superior ou um array que mistura objetos com outros valores — é recusada com a linha e a coluna, nunca adivinhada.
- Objetos aninhados são achatados em chaves com ponto (address.city) por padrão; arrays nunca são achatados, são gravados como JSON compacto dentro da célula. Desligue o achatamento para manter objetos aninhados também como JSON. Um null vira célula vazia.
- O JSON é interpretado de forma estrita: sem comentários, sem vírgulas finais, sem aspas simples, sem caracteres de controle sem escape, aninhamento de até 64 níveis. Um objeto por linha (JSON Lines) não é aceito — coloque os objetos dentro de um array primeiro.
- O CSV é o lado tolerante: aspas não fechadas são estendidas até o fim do texto e sua linha é nomeada, linhas em branco são ignoradas e contadas, e uma linha com quantidade de campos errada é listada. Só o lado JSON gera erros rígidos.
- O CSV de saída é gravado com finais de linha CRLF e sem marca de ordem de bytes, e é idêntico ao que você copia. Se o Excel mostrar caracteres corrompidos ao abrir com duplo clique um CSV não latino, importe via Dados → De texto/CSV e escolha UTF-8.
- Fora do escopo: .xlsx, arquivos compactados, vários arquivos, JSON Lines, exportação YAML/XML/SQL/Excel, ordenação, filtragem, seleção de colunas e remoção de duplicatas — o visualizador de CSV e o conversor de configuração cobrem esses casos. Nada é enviado, armazenado ou colocado na URL.
Ferramentas relacionadas
O que as pessoas costumam precisar depois, quando os dados já estão no outro formato.