Desenvolvimento

Converter JSON para CSV

Cole um array de objetos e receba um CSV. As colunas são a união de todas as chaves que aparecem, na ordem em que surgem pela primeira vez, então as linhas em que falta um campo ficam com um espaço em branco em vez de empurrar todo o resto para o lado. As aspas seguem a RFC 4180: os campos que contêm o delimitador, uma aspa ou uma quebra de linha são envolvidos em aspas, e as aspas internas são duplicadas.

O Excel espera ponto e vírgula nas configurações regionais que usam a vírgula como separador decimal. Se as suas colunas chegarem espremidas em uma só, o motivo é esse.

Saída

O achatamento transforma address.city em uma coluna própria. Os arrays continuam como texto JSON em uma única célula nos dois casos.

0Linhas
0Colunas
0Tamanho do CSV

CSV é um costume, não um padrão

A RFC 4180 foi publicada em 2005 e se descreve como informativa. Ela documenta o que a maioria das pessoas já fazia, em vez de ditar o que se devia fazer, e muitos programas a ignoram. É por isso que importar um CSV exige três tentativas com tanta frequência. As regras que esta ferramenta segue são as da RFC, porque são o mais próximo que existe de um denominador comum:

Campos com espaços no início ou no fim também recebem aspas aqui. A RFC não exige, mas muitos parsers removem o espaço em branco que está fora das aspas e você raramente quer isso.

Transformar uma árvore em um retângulo

Esta é a parte que não dá para fazer de forma limpa, só dá para escolher. O JSON aninha; o CSV não. Três casos e o que acontece com cada um:

As colunas são a união de todas as chaves de todas as linhas, na ordem em que aparecem pela primeira vez. A linha em que falta uma chave recebe uma célula vazia, e é por isso que a contagem de linhas e de colunas continua estável mesmo quando os seus objetos não estão.

Os problemas do Excel

Três coisas dão errado entre um arquivo CSV correto e uma planilha correta, e nenhuma delas é culpa do arquivo.

A codificação. O Excel no Windows ainda lê um .csv comum usando a página de código legada do sistema, então José chega como José. Uma marca de ordem de bytes UTF-8 no início do arquivo diz o contrário, e é para isso que serve aquela caixa de seleção, marcada por padrão. O BOM só entra no arquivo baixado, nunca no texto copiado, porque todo o resto do mundo o trata como lixo.

Os tipos. Abrir um CSV com dois cliques deixa a planilha adivinhar. Os zeros à esquerda somem, então o código postal 01234 vira 1234. IDs numéricos longos viram notação científica e perdem os últimos dígitos. Qualquer coisa vagamente parecida com uma data vira data, no formato da configuração regional. Use Dados e depois Obter dados de texto/CSV, e defina as colunas problemáticas como Texto durante a importação.

As fórmulas. Uma célula cujo texto começa com =, +, @ ou uma tabulação é avaliada como fórmula em vez de ser exibida. Isso é injeção de CSV, e é uma via de ataque de verdade quando os dados vieram de usuários. Esta ferramenta conta esses campos e avisa você, mas não os neutraliza, porque a correção habitual — colocar um apóstrofo na frente — estraga o valor para tudo que leia o mesmo arquivo e não seja uma planilha. Decida de acordo com o destino do arquivo.

O que falta

Não há streaming. O JSON, o valor já analisado e o CSV pronto ficam todos na memória ao mesmo tempo, então alguns megabytes são confortáveis e cem não são. Os números são escritos do jeito que o JavaScript os imprime, o que significa que um inteiro além de 2^53 já perdeu precisão antes de chegar a esta ferramenta. E tanto null quanto a string vazia saem como uma célula vazia: o CSV não tem como diferenciar os dois, então essa distinção não sobrevive à viagem.

Perguntas frequentes

Que formato o meu JSON precisa ter?

Um array de objetos é o caso normal, um objeto por linha. Um único objeto também funciona e produz uma linha. Um array de valores simples vira uma tabela de uma coluna só, com o cabeçalho "value". O resto não tem linhas dentro e é recusado.

Por que as minhas colunas ficaram todas espremidas na célula A1?

A sua planilha espera outro delimitador. O Excel segue o separador de listas do sistema, que é o ponto e vírgula na maior parte da Europa e da América Latina. Troque o delimitador para ponto e vírgula e abra o arquivo de novo.

Devo manter o BOM UTF-8?

Mantenha se o arquivo for aberto no Excel no Windows. Tire se o arquivo for para um script, para um carregador de banco de dados ou para um pipeline Unix, onde esses três bytes a mais podem acabar grudados no nome da primeira coluna.

Dá para ter uma linha por item de um array aninhado?

Aqui não. Isso significaria duplicar todos os campos do pai nas linhas do filho, e a ferramenta não tem como saber qual array você queria expandir. Divida os dados em uma tabela pai e uma tabela filho com um id em comum e converta cada uma.

Os dados são enviados para um servidor?

Não. A análise, o achatamento, as aspas e o download acontecem nesta aba. O arquivo baixado é montado a partir de um blob na memória e nunca sai da sua máquina.

Última atualização 19 de setembro de 2026