Ferramentas
Guias

Conversor de JSON para CSV

JSON

Achata um array de objetos JSON em CSV com aspas RFC 4180. Baixa o resultado como arquivo.

100% no cliente Sem backend
Entrada
Saída
Nesta página

O que é um conversor de JSON para CSV?#

Um conversor de JSON para CSV pega um array JSON de objetos — a forma que a maioria das APIs e bases de dados emite quando devolve linhas — e escreve-o como texto CSV, valores separados por vírgulas. Cada objeto torna-se uma linha, cada chave de topo torna-se uma coluna, e a primeira linha contém os nomes dos campos. O resultado é texto simples que folhas de cálculo, ferramentas de dados e bases de dados importam diretamente.

O CSV parece trivial até ser preciso produzi-lo corretamente. O formato que realmente funciona em todo o lado é o RFC 4180: campos que contenham uma vírgula, uma aspa dupla ou uma quebra de linha têm de ficar entre aspas duplas, e qualquer aspa dupla já presente no campo tem de ser duplicada (""). As linhas separam-se com CRLF, não com uma mudança de linha simples. Erre em algum disso e um nome como Smith, John ou um valor como He said "hi" corrompe silenciosamente as colunas a jusante — a folha de cálculo vê uma coluna a mais ou trunca um campo.

Este conversor trata de tudo isso por si, e também lida com o fato incómodo de o JSON ser hierárquico e o CSV ser plano: os objetos aninhados são achatados em colunas com notação de ponto (address.city), e os campos de array ou objeto que não podem ser achatados são serializados como texto JSON dentro da sua célula. Também escolhe o delimitador — vírgula, ponto e vírgula, tabulação ou pipe — porque “CSV” significa coisas diferentes em diferentes localidades.

Como usar#

  1. Cole um array JSON de objetos no painel Entrada à esquerda. Um objeto isolado, ou um objeto que envolva as linhas sob uma única chave como {"data": [...]}, também é aceite.
  2. Escolha o Delimitador, (predefinição), ;, Tab ou |. O ponto e vírgula é o que muitas localidades europeias esperam do Excel; a tabulação dá TSV.
  3. Marque Achatar aninhados (ativo por padrão) para expandir objetos aninhados em colunas com notação de ponto. Desmarque para manter os objetos aninhados como texto JSON numa única célula.
  4. O CSV aparece em tempo real no painel Saída, com aspas aplicadas sempre que um campo delas precisa. A linha de estado indica o número de linhas.
  5. Clique em Baixar para guardar data.csv, ou Copiar para levar o texto para a área de transferência.
  6. Exemplo carrega um pequeno conjunto de dados com duas linhas; Limpar repõe ambos os painéis.

Principais funcionalidades#

  • Aspas conforme RFC 4180. Os campos são envolvidos e as aspas interiores duplicadas exatamente quando a especificação o exige, pelo que vírgulas, aspas e quebras de linha dentro dos valores nunca partem a estrutura de colunas.
  • Fins de linha CRLF. A saída usa quebras de linha ao estilo Windows, o que maximiza a compatibilidade com o Excel e outro software de folha de cálculo em todas as plataformas.
  • Escolha do delimitador. Vírgula, ponto e vírgula, tabulação ou pipe — escolha o que a sua ferramenta a jusante espera, e as aspas adaptam-se ao delimitador escolhido.
  • Achatar com notação de ponto. Objetos aninhados expandem-se em colunas nomeadas para que os seus campos interiores possam existir por si; arrays e objetos teimosos tornam-se células de texto JSON em vez de serem descartados.
  • Colunas estáveis em linhas irregulares. O cabeçalho é a união das chaves de todas as linhas por ordem de primeira aparição, pelo que linhas com campos a mais ou a menos continuam a alinhar-se corretamente.

Exemplo prático#

Carregue em Exemplo e a entrada é um array com duas linhas:

[
  { "name": "Ada Lovelace", "role": "Engineer", "skills": ["math", "logic"] },
  { "name": "Bob",          "role": "PM",       "skills": ["docs"] }
]

Com o delimitador definido como , e Achatar aninhados ativado, as colunas são name, role, skills. O campo skills é um array, pelo que é serializado para texto JSON; como esse texto contém vírgulas e aspas duplas, é posto entre aspas e as suas aspas interiores são duplicadas:

name,role,skills
Ada Lovelace,Engineer,"[""math"",""logic""]"
Bob,PM,"[""docs""]"

Repare em duas coisas que o conversor fez silenciosamente e corretamente. Ada Lovelace não está entre aspas, porque contém apenas um espaço — sem delimitador, sem aspa, sem mudança de linha — pelo que envolvê-lo seria inútil. E a célula skills da Ada está entre aspas com aspas interiores duplicadas, porque contém tanto vírgulas como caracteres " que de outro modo corromperiam a linha.

Mude o Delimitador para ; e as vírgulas dentro da célula skills já não entram em conflito com o separador, mas o campo continua entre aspas por causa das aspas duplas embutidas — o conversor põe entre aspas sempre que qualquer gatilho RFC 4180 está presente, não apenas o delimitador.

FAQ#

Porque é que as aspas duplas dos meus dados são duplicadas para ""?#

Essa é a regra RFC 4180 para incorporar uma aspa dupla literal dentro de um campo entre aspas: escrevê-la duas vezes. Um valor como He said "hi" torna-se "He said ""hi""" no CSV — as aspas exteriores envolvem o campo (porque contém um "), e cada " interior é duplicado para o parser saber que é dado, não o fim do campo. As ferramentas que leem CSV corretamente restaurarão as aspas simples originais na importação.

O meu campo contém uma vírgula. Vai partir as colunas?#

Não. Qualquer campo que contenha o delimitador, uma aspa dupla, um carriage return ou uma mudança de linha é automaticamente envolvido em aspas duplas, pelo que um valor como Smith, John se torna "Smith, John" e fica numa só coluna. Não tem de fazer escape de nada à mão.

Porque havia de escolher ponto e vírgula ou tabulação em vez de vírgula?#

Localidade. O Excel em muitas localidades europeias usa ; como separador de lista predefinido, pelo que um arquivo separado por vírgulas abre com tudo amontoado numa só coluna até o reimportar. Separado por tabulações (TSV) é o mais seguro quando os seus dados podem conter tanto vírgulas como pontos e vírgula — tabulações essencialmente nunca aparecem em valores reais. Escolha o que a sua ferramenta a jusante espera.

O que acontece a um objeto aninhado ou a um campo de array?#

Com Achatar aninhados ativado, um objeto aninhado expande-se em colunas com notação de ponto (address.city, address.zip), pelo que cada valor interior obtém a sua própria coluna. Um campo de array não pode ser achatado em colunas sem perda, pelo que é serializado como texto JSON dentro da sua célula — por exemplo ["math","logic"]. Nada é descartado; se preferir ter cada elemento do array na sua própria linha, reestruture o JSON primeiro.