Conversor de JSON para CSV

Cole um array JSON de objetos à esquerda, obtenha um CSV com aspas adequadas à direita. Cabeçalho a partir das chaves. Sem upload.

  1. Cole um array JSON de objetos na área de texto à esquerda.
  2. Clique em "Converter para CSV". A linha de cabeçalho é construída pela união das chaves dos objetos.
  3. Copie o resultado, ou baixe como data.csv.
  4. Para valores aninhados, o campo é convertido em JSON-string — achate antes se quiser colunas planas.
O que ele faz?

Converte um array JSON de objetos em CSV RFC 4180. A linha de cabeçalho é a união de todas as chaves dos objetos. Valores recebem aspas CSV quando contêm vírgulas, aspas ou quebras de linha. Números e booleanos são emitidos sem aspas; null e undefined viram campos vazios. Valores aninhados (objetos, arrays) são convertidos em JSON-string num único campo entre aspas — CSV não pode representar hierarquia nativamente.

Exemplo

Entrada JSON:

[
  {"name":"Ada","age":36,"role":"engineer"},
  {"name":"Grace","age":40,"role":"scientist"}
]

Saída CSV:

name,age,role
Ada,36,engineer
Grace,40,scientist

Armadilhas comuns de JSON para CSV

CSV é um formato plano. Saídas "estranhas" geralmente vêm de formas JSON que não têm representação plana.

  • Nível superior não é array. Um objeto JSON `{"a":1,"b":2}` não pode virar CSV diretamente — envolva num array: `[{"a":1,"b":2}]`. O CSV terá uma linha de cabeçalho e uma de dados.
  • Chaves heterogêneas entre linhas. Se o primeiro objeto tem `{a,b}` e o segundo `{a,c}`, o cabeçalho é `a,b,c` (a união). Linhas sem uma chave emitem campo vazio. Pré-processe se quiser esquema mais estrito.
  • Valores aninhados achatados silenciosamente. Um campo como `{"address":{"city":"NY"}}` vira uma única coluna CSV cujo valor é a string JSON `{"city":"NY"}`. Para colunas separadas `address.city`, achate em JavaScript primeiro: `{address_city: row.address.city}`.
  • Quebras de linha embutidas em valores. Uma string multilinha em valor JSON vira um campo CSV entre aspas com `\n` literais dentro das aspas. A maioria das planilhas trata corretamente; algumas ferramentas legadas não.
  • Caracteres especiais em cabeçalhos. Chaves JSON com vírgulas, aspas ou quebras funcionam mas produzem cabeçalho que alguns consumidores CSV parseiam mal. Renomeie as chaves para alfanuméricos + underscore antes de converter se precisar de máxima compatibilidade.
  • Vírgula final no JSON. `[{"a":1},]` é JSON inválido (vírgula sobrando após o último elemento). O parser rejeita antes do passo CSV. A maioria dos formatadores JSON remove — passe por `/json-prettifier` se precisar.
Perguntas frequentes

Como obter saída separada por tabulação (TSV)?

Esta página emite CSV separado por vírgulas. Para TSV, troque `,` por `\t` no resultado, ou rode PapaParse com `delimiter: "\t"` na linha de comando — mesma biblioteca.

A ordem das chaves é preservada na linha de cabeçalho?

Sim — o cabeçalho usa a ordem em que as chaves aparecem pela primeira vez em todos os objetos. Para ordem alfabética, ordene as chaves no seu JSON antes de colar.

Como datas são tratadas?

JSON não tem tipo Date nativo — datas geralmente já estão serializadas como strings ISO 8601. Passam sem alteração. Se seu JSON veio de JSON.stringify de um Date, já foi convertido para string ISO naquele ponto.

Posso fazer round-trip JSON → CSV → JSON?

Para dados array de objetos planos, sim. Strings continuam strings, números continuam números (com tipagem dinâmica do PapaParse na importação). Valores aninhados perdem estrutura no lado CSV e voltam como campos JSON-string, não como objetos aninhados de novo.

Meu JSON é enviado para algum lugar?

Não. Tudo roda no seu navegador — seu JSON é parseado e convertido por JavaScript nesta página e nunca enviado a servidor. Verifique nas ferramentas de desenvolvedor.

Qual o tamanho máximo do JSON?

Cerca de 50 MB antes da área de texto do navegador ficar lenta. A conversão escala linearmente; o gargalo é a renderização. Para arquivos maiores, rode PapaParse na linha de comando.