Ir para o conteúdo principal

Conversor JSON para CSV (JSON to CSV)

Execute Converter para ver o resultado aqui.

Converta uma lista JSON de objetos, ou a primeira lista de objetos dentro de um objeto, em texto CSV simples.

O que ela faz

O JSON to CSV transforma registros JSON em uma tabela simples que uma planilha consegue abrir: uma linha por registro, uma coluna por nome e todos os valores escritos como texto comum.

Ele lê uma lista de objetos, um objeto que contém essa lista ou um objeto sozinho. Objetos aninhados viram colunas com o nome em caminho separado por pontos, como address.city, e a ferramenta informa de onde vieram as linhas.

O que ela aceita

  • Aceito: uma lista de objetos, em que cada objeto é uma linha; um objeto que contém uma lista de objetos, em que a primeira lista assim é usada; e um objeto sozinho, que vira uma linha. Em uma lista no nível principal do JSON, um item que não é objeto, como um número ou um texto, vira uma linha com uma coluna chamada value.
  • De onde vêm as linhas: para um objeto, a ferramenta percorre os membros na ordem em que foram escritos, entrando nos objetos aninhados antes de seguir adiante, e usa a primeira lista que não está vazia e só tem objetos. O resultado informa o seu caminho, como employees.employee. Se não houver uma lista assim, o próprio objeto é uma linha.
  • A linha de cabeçalho lista todas as colunas encontradas em qualquer linha, na ordem em que cada uma aparece pela primeira vez. Um objeto aninhado acrescenta uma coluna por valor, com o nome formado pelo caminho unido por pontos, como address.city. Quando uma linha não tem valor para uma coluna, a sua célula fica vazia.
  • As células são texto comum. Um texto é escrito como está, um número como foi escrito (9007199254740993, 2.370 e 1e400 saem sem mudança), true e false como são, e null como uma célula vazia. Uma lista aninhada é escrita inteira como JSON compacto, como [1,null], e um objeto aninhado vazio como {}.
  • O arquivo usa vírgulas entre as células e uma quebra de linha CRLF entre as linhas (a quebra de linha padrão do CSV). É texto UTF-8 sem marca de ordem de bytes e sem quebra de linha no final. Uma célula só recebe aspas quando tem vírgula, aspas duplas ou quebra de linha, e cada aspa dupla dentro dela é duplicada.
  • Um objeto sem nenhum membro continua como uma linha de células vazias, desde que outra linha tenha pelo menos uma coluna. Se nenhuma linha tiver coluna, a tabela não teria nenhuma e a conversão é recusada.

Bom saber

  • Os tipos não são mantidos: o texto "1" e o número 1 viram os dois 1, e null, um texto vazio e um nome ausente viram todos uma célula vazia. Se você precisa manter o tipo de cada valor, o JSON to YAML o registra.
  • Só uma lista é usada. Quando um objeto tem várias listas de objetos, as outras ficam de fora, assim como os membros que estão ao lado da lista. O resultado informa a lista usada, então confira se é a que você queria.
  • Dois membros que teriam o mesmo nome de coluna, como um membro chamado a.b e um membro b dentro de um objeto a, são recusados, porque um valor sobrescreveria o outro. Nomes repetidos dentro de um objeto e strings com escapes substitutos (surrogates) sem par também são recusados, em vez de adivinhados.
  • Risco de planilha: os programas de planilha podem reinterpretar um arquivo ao abri-lo. Uma célula que começa com =, +, -, @, tabulação ou retorno de carro e não é um número simples, como =1+1 ou @SUM(A1), é escrita exatamente como está, e uma planilha pode executá-la como fórmula; a ferramenta só mostra o aviso sobre planilhas quando existe uma célula assim, nomes do cabeçalho incluídos. Números, datas e números com zeros à esquerda também podem ser convertidos por uma planilha. A ferramenta não altera nenhum dado para evitar isso: não acrescenta apóstrofos nem escapa nada por você.
  • Quando esse aviso aparece, você precisa confirmar que entende o risco antes de copiar ou baixar. Ao abrir o arquivo em uma planilha, importe-o como texto em vez de abri-lo com um duplo clique, e saiba que digitar de novo em uma célula ainda pode transformá-la em fórmula. Isso não torna a abertura de um CSV totalmente segura, e o site não pode prometer que um arquivo seja seguro em todos os programas de planilha.
  • Uma tabela com muitas colunas e muitas linhas pode gerar um resultado maior que a entrada. Se ele passar do limite de tamanho, é recusado com uma prévia incompleta (veja abaixo).

Como usar

  1. Cole ou digite o seu JSON na caixa de entrada. Pode ser uma lista de objetos, um objeto que contém uma lista de objetos ou um objeto sozinho. Nada é executado enquanto você digita.
  2. Aperte “Converter”. O CSV não tem opção de indentação.
  3. Leia o CSV ao lado da entrada. Quando as linhas vieram de dentro de um objeto, o resultado diz de qual parte, por exemplo employees.employee. Se uma célula puder ser executada como fórmula em uma planilha, um aviso sobre planilhas aparece na área do resultado. Se a conversão for recusada, a mensagem explica o motivo.
  4. Aperte “Copiar” para colocar o CSV na área de transferência, ou “Baixar” para salvar converted.csv. Se o aviso sobre planilhas apareceu, marque “Entendo o risco de planilha descrito no aviso.” antes: até você marcar, “Copiar” e “Baixar” ficam indisponíveis.

Exemplos

Uma lista de registros

Cole este JSON e aperte “Converter”. Cada objeto vira uma linha e cada nome vira uma coluna. Os textos saem como foram escritos, sem aspas, e os números saem exatamente como estavam. Uma célula só recebe aspas quando tem vírgula, aspas duplas ou quebra de linha.

[{"id":1,"name":"Ada Lovelace","city":"London"},{"id":2,"name":"Grace Hopper","city":"New York"}]
id,name,city
1,Ada Lovelace,London
2,Grace Hopper,New York

Uma lista vazia

Uma lista sem nenhum item não tem linhas para escrever, então a conversão é recusada e a mensagem explica o motivo.

[]

O array está vazio. O JSON para CSV precisa de pelo menos um item para formar uma linha.

Registros dentro de um objeto

Muitas respostas de API trazem os registros dentro de um objeto. O JSON to CSV percorre o objeto e usa a primeira lista de objetos que encontra, aqui employees.employee, e o resultado informa esse caminho. Os demais membros do objeto não entram no CSV.

{"employees":{"employee":[{"id":"1","firstName":"Tom","lastName":"Cruise"},{"id":"2","firstName":"Maria","lastName":"Sharapova"}]}}
id,firstName,lastName
1,Tom,Cruise
2,Maria,Sharapova

Objetos aninhados e listas

O objeto address vira duas colunas, address.city e address.zip. A lista tags continua inteira em uma célula, como JSON compacto, e por isso essa célula vem entre aspas (ela tem vírgulas e aspas duplas). true sai como true e null vira uma célula vazia.

[{"id":1,"address":{"city":"Recife","zip":"50000-000"},"tags":["a","b"],"active":true,"note":null}]
id,address.city,address.zip,tags,active,note
1,Recife,50000-000,"[""a"",""b""]",true,

Valores diferentes que ficam iguais

Uma célula de CSV é só texto, então os tipos se perdem. O número 1 e o texto "1" saem os dois como 1, e um texto vazio, null e um nome ausente saem todos como uma célula vazia. O nome late não existe no primeiro registro.

[{"a":1,"s":"1","e":"","n":null},{"late":true}]
a,s,e,n,late
1,1,,,
,,,,true

Limites e privacidade

Limites de tamanho

  • Entrada: até 2.000.000 bytes de texto em UTF-8 (cerca de 2 MB). Letras acentuadas e emojis ocupam mais de um byte cada. Uma entrada maior é recusada.
  • Resultado: também até 2.000.000 bytes. Se o resultado completo fosse maior, a ferramenta mostra apenas uma prévia incompleta dos primeiros 100.000 bytes, e essa prévia não pode ser copiada nem baixada.
  • Aninhamento: até 256 níveis de objetos e listas dentro uns dos outros. Um JSON mais profundo é recusado porque passa do que a ferramenta processa.
  • Tempo: uma execução que demora mais que o seu limite de tempo é interrompida. Tente uma entrada menor.

Sua privacidade

O texto que você digita ou cola, ou abre de um arquivo local, é processado localmente no seu navegador, em um Web Worker dedicado. Ele nunca é enviado para o servidor (um arquivo que você abre é lido apenas no seu navegador) e não é gravado em armazenamento, cookies nem na barra de endereços.

“Copiar” coloca o resultado na área de transferência e “Baixar” o salva como arquivo, mas só quando você aperta o botão. O arquivo é criado no seu navegador, então nada é enviado.

Para ver os detalhes completos, consulte a Política de Privacidade

Ferramentas e páginas relacionadas

O seu texto continua na página quando você troca de ferramenta na mesma aba, então dá para testar o mesmo texto em outra. Recarregar ou fechar a aba o encerra.

Todas as ferramentas