Conversor de JSON para CSV
JSONAchata um array de objetos JSON em CSV com aspas RFC 4180. Baixa o resultado como arquivo.
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#
- 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. - Escolha o Delimitador —
,(predefinição),;,Tabou|. O ponto e vírgula é o que muitas localidades europeias esperam do Excel; a tabulação dá TSV. - 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.
- 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.
- Clique em Baixar para guardar
data.csv, ou Copiar para levar o texto para a área de transferência. - 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.