Início JSON para CSV

Converter JSON para CSV

Cole um array JSON — ou NDJSON, um objeto por linha — e receba um arquivo CSV. Tudo roda nesta aba, então nada é enviado.

Outros idiomas:EnglishTürkçeEspañolDeutsch中文हिन्दीРусский

O que acontece com objetos e arrays aninhados

CSV é plano e JSON não é — essa é a decisão que define a conversão. Duas regras, escolhidas para que a saída mantenha a mesma forma, sejam quais forem as linhas que você colar:

Objetos aninhados viram colunas com ponto. {"user":{"name":"Ada"}} gera uma coluna chamada user.name. O aninhamento vai tão fundo quanto os seus dados, e a notação é a mesma notação de pontos que o gerador usa para produzir JSON aninhado.

Arrays são codificados como JSON no lugar. {"tags":["a","b"]} gera uma única coluna tags contendo ["a","b"], e não tags_0 e tags_1. Explodir um array em colunas parece mais amigável até você perceber que o número de colunas passa a depender do maior array do arquivo: adicione uma linha com três tags e todo arquivo já gerado tem outro cabeçalho. Manter o array numa célula faz o cabeçalho depender só das chaves.

Linhas com chaves diferentes

JSON real vindo de uma API raramente tem as mesmas chaves em todos os objetos. As colunas são a união de todas as chaves vistas, na ordem em que aparecem pela primeira vez, e uma linha sem uma chave recebe uma célula vazia. Nada se perde e nada se desloca:

[{"a": 1}, {"b": 2}]

a,b
1,
,2

Formatos de entrada aceitos

  • Um array de objetos — o caso normal, e o que a maioria das APIs devolve.
  • Um único objeto — vira um arquivo de uma linha.
  • NDJSON — um objeto JSON por linha, o formato da maioria dos arquivos de log e das exportações do BigQuery. Detectado automaticamente quando a entrada inteira não é JSON válido, mas cada linha é.

Um array de valores simples — [1, 2, 3] — é rejeitado em vez de adivinhado. Ele não tem nomes de campo, então não há um cabeçalho honesto para escrever.

Escape na saída

Valores que contêm vírgula, aspas duplas, retorno de carro ou quebra de linha vão entre aspas, com as aspas internas duplicadas, conforme a RFC 4180. É isso que torna a saída segura para voltar a um analisador — inclusive o conversor no sentido contrário, o jeito mais rápido de conferir que uma conversão vai e volta.

Abrir o resultado numa planilha

O Excel escolhe o delimitador pelas configurações regionais do sistema, então num computador em português, onde a vírgula é o separador decimal, um arquivo separado por vírgulas cai numa coluna só. Use Dados → De Texto/CSV em vez de abrir o arquivo com dois cliques, ou converta para TSV — tabulações não são ambíguas.

Perguntas frequentes

Como os objetos aninhados são tratados?

Eles são achatados em nomes de coluna com ponto: {"user":{"name":"Ada"}} vira uma coluna chamada user.name. O aninhamento vai tão fundo quanto os dados.

Por que meu array está numa única célula?

Porque explodi-lo em tags_0, tags_1 e assim por diante faria o número de colunas depender do maior array do arquivo, e uma nova linha poderia mudar o cabeçalho. O array é gravado como JSON numa única célula.

Ele converte NDJSON?

Sim. Se a entrada não é JSON válido como um todo, mas cada linha pode ser lida sozinha, ela é tratada como NDJSON — um objeto por linha.

E se meus objetos tiverem chaves diferentes?

O cabeçalho é a união de todas as chaves, na ordem em que aparecem pela primeira vez, e uma linha sem uma chave recebe uma célula vazia. Nenhuma linha é descartada e nenhum valor muda de coluna.

Alguma coisa é enviada?

Não. A conversão roda no seu navegador; o JSON nunca sai da sua máquina.

Relacionado

  • /pt-br/csv-to-json-converter — a conversão no sentido contrário e as regras de detecção de tipos que ela aplica.
  • /json-to-sql-converter — o mesmo achatamento, mas escrevendo CREATE TABLE e INSERT (em inglês).
  • /csv — gerar dados de teste em CSV a partir de um esquema (em inglês).
  • /excel-sample-data — abrir corretamente um arquivo convertido no Excel e no Google Sheets (em inglês).

Última atualização