Conversor de JSON para CSV
Transforme um array JSON de objetos em uma tabela CSV, inteiramente no seu navegador.
Roda inteiramente no seu navegador. Nada é enviado, registrado ou armazenado.
Cole uma resposta de API e receba uma tabela que você consegue abrir em uma planilha. Toda chave que aparece em qualquer lugar do array vira uma coluna, e isso acontece no seu navegador, então um payload cheio de dados pessoais nunca sai da sua máquina.
Como funciona
O documento precisa ser um array de objetos, porque é isso que uma tabela é: um objeto por linha. Um objeto sozinho é aceito como tabela de uma linha. Qualquer outra coisa — um número solto, uma string, um array de strings — não tem linhas e é relatada em vez de adivinhada.
O cabeçalho é a união de todas as chaves do array, na ordem em que cada uma apareceu pela primeira vez, e não simplesmente as chaves do primeiro objeto. Um campo opcional ausente no primeiro registro é exatamente o formato de uma resposta de API real, e pegar só as chaves da primeira linha descartaria essa coluna em todas as linhas.
Um objeto ou array aninhado é escrito na célula dele como JSON, em vez de espalhado por colunas extras. Achatar parece mais arrumado e não sobrevive à volta: dois registros aninhados de formas diferentes produziriam conjuntos de colunas diferentes, e uma chave que já contenha um ponto ficaria indistinguível de uma aninhada.
Null vira célula vazia, true e false viram as palavras true e false, e os números são escritos como o JSON os escreveria, para que um valor não mude de forma na saída.
Exemplos
| Caso | Entrada | Resultado |
|---|---|---|
| Uma chave ausente no primeiro registro ainda ganha coluna | [{"id": 1}, {"id": 2, "note": "late"}] | id,note 1, 2,late |
Perguntas frequentes
Por que o meu objeto aninhado aparece como JSON em uma célula?
Porque achatá-lo não seria reversível. Se um registro aninha três níveis e o seguinte aninha um, achatar produz dois conjuntos diferentes de colunas a partir do mesmo array; e uma chave que já contenha um ponto fica impossível de distinguir de um caminho aninhado. Manter a estrutura na célula faz com que converter de volta devolva o que você tinha.
O Excel vai abrir isto corretamente?
Depende mais da configuração regional do que do arquivo. Uma planilha em uma configuração que escreve decimais com vírgula espera o ponto e vírgula como separador, e é por isso que ele está na lista de delimitadores. Se um arquivo separado por vírgulas abre como uma coluna por linha, o motivo é esse.
O meu array está aninhado dentro de um objeto. Por que falha?
Porque o documento como um todo não é uma lista de linhas. Uma resposta de API no formato {"data": [...]} precisa que o array em si seja colado, e não o invólucro. O invólucro tem exatamente uma linha — ele mesmo — e convertê-lo produziria uma tabela com uma célula contendo tudo.
O meu documento é enviado para algum lugar?
Não. A página carrega um pequeno script que converte 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