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