Json To Csv LogoJson To Csv

Existe uma forma de converter JSON em CSV? Sim — 5 jeitos, escolha pelo seu caso (guia 2026)

Sim. Existem cinco formas práticas de converter JSON em CSV, e a certa depende da sua situação: um arquivo único, um destino em planilha, um trabalho recorrente ou um pipeline. Aqui estão todas elas, testadas no mesmo arquivo, além dos casos em que a própria conversão é a decisão errada.

Atualizado: 2026-10-179 min de leitura

O arquivo de funcionários em que todas as formas abaixo são testadas

A maioria dos guias de conversão descreve cada método no abstrato, o que torna impossível compará-los. Este faz o oposto: todas as formas abaixo rodam no mesmo arquivo de três registros, então os resultados são diretamente comparáveis. O arquivo é pequeno, mas não trivial — ele tem um objeto aninhado (dept com team e floor), uma lista (skills) e os dois casos extremos que atrapalham conversões reais: um booleano (active) e uma lista vazia (Lina não tem skills).

Se um método não consegue lidar com este arquivo de forma limpa, ele também não vai lidar com o seu arquivo real. Se consegue, você sabe exatamente como é o resultado antes de confiar nele com algo maior. Tenha o arquivo em mente enquanto lê: a resposta correta tem seis colunas (id, name, dept.team, dept.floor, skills, active) e três linhas, com os skills de Ana como chat; phone e os skills de Lina como vazio.

staff.json, the shared test file
[
  { "id": 1, "name": "Ana", "dept": { "team": "Support", "floor": 2 }, "skills": ["chat", "phone"], "active": true },
  { "id": 2, "name": "Ken", "dept": { "team": "Sales", "floor": 3 }, "skills": ["email"], "active": false },
  { "id": 3, "name": "Lina", "dept": { "team": "Support", "floor": 2 }, "skills": [], "active": true }
]

Forma 1: um conversor online — o jeito sem instalar nada

Abra um conversor gratuito de JSON para CSV online, cole o JSON ou envie o arquivo e baixe o CSV. Esse é o método inteiro e, para um arquivo único, ele é o certo: não há nada para instalar, nada para aprender, e o resultado fica pronto em menos de um minuto. O conversor deste site roda inteiramente no seu navegador, então o arquivo nunca sai da sua máquina, e o botão de achatamento decide como os dados aninhados são tratados.

Com o achatamento ligado, o arquivo de funcionários converte para exatamente a resposta de seis colunas acima: dept vira dept.team e dept.floor, a lista skills se junta em uma única célula com separador ponto e vírgula, e a lista vazia de Lina vira uma célula vazia. Com o achatamento desligado, o mesmo arquivo mantém dept e skills como texto JSON dentro de células únicas — um CSV válido, mas não uma tabela que você consiga ordenar ou filtrar. Nosso guia anterior sobre como achatar JSON em CSV documenta o botão célula por célula, incluindo seus casos extremos.

Os limites honestos: um conversor online é uma ferramenta de um arquivo por vez. Se você precisa converter cinquenta arquivos toda manhã, ou se a conversão precisa acontecer dentro de outro programa, uma das formas abaixo se encaixa melhor. E se a sua lista em si é o que você quer analisar — uma linha por skill, não uma linha por pessoa — nenhum conversor online faz isso; você precisa da receita de explodir no nosso guia para achatar os dados JSON.

Way 1 output: online converter, flattening on (verified)
id,name,dept.team,dept.floor,skills,active
1,Ana,Support,2,chat; phone,true
2,Ken,Sales,3,email,false
3,Lina,Support,2,,true

Forma 2: a planilha que você já tem — Excel Power Query

Se o CSV vai parar em uma planilha de qualquer jeito, talvez você nem precise de um conversor: o Excel consegue ler JSON diretamente pelo Power Query. Abra uma pasta de trabalho em branco, vá em Dados, Obter Dados, De Arquivo, De JSON, escolha o arquivo, e o Power Query mostra os registros. Expanda a coluna dept para achatar o objeto aninhado em colunas team e floor, expanda ou extraia a coluna skills dependendo de você querer uma linha por skill ou uma única célula unida, depois Feche e Carregue. O resultado chega como uma tabela real do Excel, pronta para filtrar e criar tabela dinâmica.

Duas coisas para saber antes de começar. Primeiro, o passo de expandir é por coluna aninhada: um arquivo com três níveis de aninhamento precisa de três expansões, e é fácil esquecer uma e acabar com uma coluna de valores Record. Segundo, abrir um CSV pronto no Excel tem suas próprias armadilhas — um arquivo UTF-8 pode abrir com caracteres bagunçados, e um valor como 007 pode perder o zero inicial — por isso nosso guia sobre como criar CSV a partir de JSON cobre o hábito de validar reimportando: abra o resultado, confira os caracteres, confira os códigos, e só então considere pronto.

O Google Planilhas é a única lacuna desta forma. O Planilhas não tem importação nativa de JSON: não existe a opção Arquivo, Importar, JSON. As rotas práticas são colar através de um conversor online primeiro, ou um pequeno Apps Script que busca e interpreta o JSON. Se você já está no Planilhas, a rota do conversor é mais rápida; se a importação precisa se repetir todo dia, a rota do script vence.

Forma 3: código que você já executa — Python ou jq

Se você já escreve código, Python e jq são os dois cavalos de força, e eles discordam de um jeito instrutivo. O json_normalize do pandas em Python achata objetos aninhados em colunas com notação de ponto automaticamente — dept vira dept.team e dept.floor sem nenhum passo extra — mas ele deixa listas como strings repr do Python, a não ser que você as una por conta própria. Rode sem a união e a célula de skills de Ana fica ['chat', 'phone'], que é uma lista impressa como texto, não um valor que você consiga usar. A correção de união em uma linha está no trecho abaixo, e o resultado então bate exatamente com o conversor online.

O jq adota a abordagem oposta: ele não faz nada automaticamente, e cada coluna é explícita. Você nomeia cada campo, escolhe a união, e obtém exatamente a linha de cabeçalho que escreveu. Essa explicitude é a verdadeira força do jq para conversões únicas de arquivos complicados, e sua fraqueza para arquivos largos — um registro com quarenta campos significa quarenta expressões. Para o arquivo de funcionários, ambas as ferramentas produzem as mesmas seis colunas e três linhas, que é o ponto: a forma muda, a resposta correta não.

Mais uma observação de Python para o caso recorrente: json_normalize mais explode transforma uma lista em uma linha por item, que é o movimento de explodir que nenhum conversor online oferece. Se a sua análise precisa de uma linha por skill, essa é a receita — ela está coberta por completo, com um equivalente verificado em jq, no nosso guia para achatar os dados JSON.

Way 3 output: Python, json_normalize plus join (verified)
import json
import pandas as pd

rows = json.load(open('staff.json'))
df = pd.json_normalize(rows)
df['skills'] = df['skills'].apply(lambda v: '; '.join(v))
df.to_csv('staff.csv', index=False)

# staff.csv:
# id,name,skills,active,dept.team,dept.floor
# 1,Ana,chat; phone,True,Support,2
# 2,Ken,email,False,Sales,3
# 3,Lina,,True,Support,2

Forma 3, continuação: o one-liner de jq

A versão em jq da mesma conversão é um único comando. A linha de cabeçalho é escrita à mão, depois cada registro vira uma linha: os campos aninhados são acessados com pontos (dept.team), a lista é unida com ponto e vírgula, e o @csv cuida das aspas. Rode no arquivo de funcionários e você obtém as mesmas três linhas da versão em Python, com uma diferença cosmética: o jq coloca aspas em todos os campos de texto, então a linha de cabeçalho fica "id","name",... em vez de id,name,.... Ambos são CSV válidos; toda planilha e todo interpretador os leem de forma idêntica.

O jq merece seu lugar por um segundo motivo: ele funciona em arquivos grandes demais para abrir em um editor. O one-liner acima carrega o arquivo inteiro na memória, o que é bom para qualquer coisa até dezenas de megabytes, mas o jq também tem um modo de streaming (a flag --stream) que processa um arquivo registro por registro. Se o seu arquivo JSON tem centenas de megabytes, jq em streaming ou um script Python em blocos é o caminho; uma aba do navegador não é.

Way 3 output: jq, explicit columns (verified)
jq -r '(["id","name","dept.team","dept.floor","skills","active"] | @csv),
  (.[] | [.id, .name, .dept.team, .dept.floor, (.skills | join("; ")), .active] | @csv)' staff.json

# "id","name","dept.team","dept.floor","skills","active"
# 1,"Ana","Support",2,"chat; phone",true
# 2,"Ken","Sales",3,"email",false
# 3,"Lina","Support",2,"",true

Forma 4: o seu editor — VS Code

Se você já vive no VS Code, a conversão pode acontecer sem sair do editor. A rota mais rápida é o terminal integrado: abra a pasta, abra um terminal dentro do VS Code, e rode o comando Python ou jq da Forma 3 — o CSV de saída aparece na mesma pasta, e as extensões de visualização de Excel do VS Code ou a prévia embutida deixam você conferi-lo na hora. Para quem prefere cliques a comandos, extensões como Rainbow CSV ou uma extensão de JSON para CSV convertem o arquivo aberto pela paleta de comandos.

A verdadeira vantagem da rota do editor é a iteração: quando o JSON é um arquivo de configuração ou uma resposta de API que você já está editando, converter no lugar mantém você no contexto, e a visualização de diff do editor mostra exatamente o que mudou. O passo a passo completo — extensão, terminal e uma tarefa de um único toque de tecla — está no nosso guia de VS Code, incluindo as armadilhas (uma extensão que transforma dados aninhados em texto, um terminal que escreve na pasta errada). A versão curta: o VS Code é um bom lugar para converter, mas a conversão em si ainda é uma das outras formas vestindo uma fantasia de editor.

Forma 5: dentro do seu próprio aplicativo — uma chamada de biblioteca

A quinta forma é para quando a conversão não é uma tarefa única, mas parte de algo que você está construindo: um botão de exportação de painel, um relatório noturno, um pipeline de dados. Aí você não procura uma ferramenta — você chama uma função. O trecho abaixo é o núcleo disso em JavaScript: percorra os nomes de colunas com pontos, una os valores de lista, escape qualquer coisa que contenha vírgula, aspa ou quebra de linha dobrando as aspas e envolvendo a célula. Rode no arquivo de funcionários e ele produz exatamente as mesmas linhas que o conversor online, o que não é coincidência: o mecanismo do conversor deste site é a mesma ideia, com os casos extremos (linhas irregulares, listas aninhadas, objetos vazios) tratados.

A decisão aqui é construir versus pegar emprestado, e a resposta honesta geralmente é pegar emprestado: json_normalize do pandas, uma biblioteca de CSV na sua linguagem, ou o padrão do mecanismo de conversor abaixo vão vencer uma versão feita à mão nos casos extremos. Escreva a sua só quando a conversão tiver regras que nenhuma biblioteca oferece — um esquema de achatamento personalizado, uma união específica do domínio, um requisito de streaming. E se a conversão roda em um servidor, lembre da diferença de privacidade: um conversor de navegador mantém o arquivo na máquina do usuário, enquanto um conversor de servidor vê os dados.

Way 5 output: a library call in JavaScript (verified)
const rows = require('./staff.json');
const cols = ['id', 'name', 'dept.team', 'dept.floor', 'skills', 'active'];
const get = (r, p) => p.split('.').reduce((o, k) => o?.[k], r);
const esc = v => { const s = String(v ?? '');
  return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; };
console.log(cols.join(','));
for (const r of rows)
  console.log(cols.map(c => esc(c === 'skills' ? (get(r, c) || []).join('; ') : get(r, c))).join(','));

# id,name,dept.team,dept.floor,skills,active
# 1,Ana,Support,2,chat; phone,true
# 2,Ken,Sales,3,email,false
# 3,Lina,Support,2,,true

Quando não há uma boa forma

Um guia que só diz sim estaria mentindo por omissão, porque há arquivos em que a conversão para CSV é a decisão errada, e saber disso economiza mais tempo do que qualquer ferramenta. O primeiro caso é dados profundamente aninhados ou em forma de grafo: uma thread de comentários em que comentários contêm respostas que contêm respostas, ou registros que referenciam uns aos outros. Achatar isso em colunas produz centenas de colunas esparsas ou um resumo com perda, e a resposta honesta é mantê-lo como JSON ou consultá-lo com jq em vez de achatá-lo.

O segundo caso é esquemas mistos: um arquivo em que um registro tem chaves que os outros não têm, ou a mesma chave guarda uma string em um registro e um objeto em outro. Um conversor lida com isso pegando a união de todas as chaves e deixando células vazias, o que é correto, mas muitas vezes inútil — a tabela resultante é quase só buracos. Antes de converter, pergunte se os registros são realmente o mesmo tipo de coisa; se não forem, divida o arquivo por tipo de registro primeiro, depois converta cada parte.

O terceiro caso é escala: um arquivo grande demais para a ferramenta em mãos. Um conversor de navegador trava em algum ponto nas dezenas de megabytes, uma importação no editor trava, e até o pandas fica lento. A correção não é um conversor melhor, mas uma forma diferente: divida o arquivo, transmita com jq --stream, ou pule o CSV por completo e mantenha os dados como JSON Lines (um objeto JSON por linha), que transmite naturalmente e continua consultável. Nosso guia para converter JSON grande em CSV online cobre a questão do tamanho por completo.

Qual forma você deve escolher?

Escolha pela sua situação, não pela reputação da ferramenta. Um arquivo, uma vez, e você quer resolver: Forma 1, o conversor online. O resultado precisa parar em uma planilha em que você vai continuar trabalhando: Forma 2, Power Query. Você já escreve código e o arquivo é complicado ou a conversão vai se repetir: Forma 3, Python ou jq. Você já está editando o arquivo no VS Code: Forma 4, o terminal integrado. A conversão precisa acontecer dentro de um software que você distribui: Forma 5, uma chamada de biblioteca.

Dois critérios de desempate resolvem a maioria dos casos restantes. Se a privacidade importa — o arquivo tem dados de clientes, credenciais, qualquer coisa que você não enviaria por e-mail — prefira uma forma que mantenha os dados na sua máquina: um conversor de navegador, um script local ou o seu editor. Se o arquivo é enorme, prefira uma forma que transmita: jq --stream ou um script Python em blocos, não uma aba do navegador. Todo o resto é gosto e hábito, e qualquer uma das cinco formas produz o mesmo CSV correto para um arquivo bem estruturado.

O que toda forma precisa decidir

Qualquer que seja a forma que você escolha, quatro decisões estão escondidas dentro dela, e dois arquivos convertidos com respostas diferentes para elas não são o mesmo CSV. Achatamento: os objetos aninhados viram colunas com pontos, ou ficam como texto JSON em uma célula? Delimitador: vírgula, ponto e vírgula, tab ou pipe — e a sua planilha espera o mesmo? Linha de cabeçalho: os nomes das colunas estão incluídos, e são os nomes que a sua ferramenta seguinte espera? Codificação: UTF-8 puro, e a sua planilha o abre como UTF-8 ou como outra coisa?

Esses não são tópicos avançados; são as decisões que definem se o CSV abre certo na primeira tentativa ou na quinta. Nosso guia para criar CSV a partir de JSON percorre todas as sete decisões que transformam dados brutos em um arquivo funcional, com cada uma testada contra o conversor real. Leia uma vez, e cada conversão depois fica mais rápida.

Guias relacionados

Perguntas frequentes

Existe uma forma gratuita de converter JSON em CSV?

Sim — todas as cinco formas deste guia são gratuitas. Um conversor online é gratuito sem cadastro, o Excel Power Query já vem incluído no Excel, Python e jq são gratuitos e de código aberto, o VS Code é gratuito, e a abordagem em JavaScript usa só a biblioteca padrão. Você nunca precisa pagar para converter JSON em CSV.

Existe uma forma de converter JSON em CSV sem instalar nada?

Sim. Use um conversor online gratuito: cole o JSON ou envie o arquivo no seu navegador e baixe o CSV. O conversor deste site roda inteiramente no seu navegador, então nada é instalado e o arquivo nunca sai da sua máquina. Se o arquivo já está aberto em uma planilha que você tem, o Power Query também não exige instalação.

Existe uma forma de converter JSON em CSV sem escrever código?

Sim — duas delas. Um conversor online não precisa de nenhum código: cole, converta, baixe. O Excel Power Query também não precisa de código: importe o arquivo JSON, expanda as colunas aninhadas clicando, e carregue o resultado como uma tabela. O código só passa a ser útil quando a conversão precisa se repetir ou o arquivo é complicado.

Existe uma forma de converter JSON em CSV no Excel?

Sim, com o Power Query: Dados, Obter Dados, De Arquivo, De JSON. Expanda cada coluna aninhada para achatar objetos em colunas com pontos, expanda ou extraia as colunas de lista dependendo de você querer uma linha por item ou uma única célula unida, depois Feche e Carregue. O Google Planilhas não tem uma importação nativa equivalente — cole através de um conversor online ou use um pequeno Apps Script em vez disso.

Existe uma forma de converter um arquivo JSON grande em CSV?

Sim, mas não em uma aba do navegador. Para arquivos nas dezenas de megabytes ou mais, use o modo streaming do jq (jq --stream), que processa o arquivo registro por registro em vez de carregar tudo, ou um script Python em blocos que lê e escreve em lotes. Se o arquivo tem centenas de megabytes, considere mantê-lo como JSON Lines (um objeto JSON por linha) em vez de CSV.

Existe uma forma de converter JSON em CSV mantendo os dados aninhados intactos?

Sim — converta com o achatamento desligado. Objetos aninhados e listas ficam então como texto JSON dentro de células únicas, então nada se perde, mas o resultado não é uma tabela ordenável. Se você precisa dos dois — colunas reais e nada perdido — achate as partes que você analisa e mantenha o resto como texto JSON, ou exploda a lista de que você precisa em uma linha por item.

Existe uma forma de converter CSV de volta para JSON?

Sim, a viagem de volta é igualmente bem atendida. Nosso guia para converter CSV em JSON cobre três métodos confiáveis: um conversor online, um trecho em Python e pandas, e o honesto caminho em duas etapas pelo Excel ou Google Planilhas, já que nenhum dos dois exporta JSON nativamente. As mesmas quatro decisões — achatamento, delimitador, cabeçalho, codificação — se aplicam ao contrário.

Um arquivo, um minuto, sem instalar

Cole JSON ou envie um arquivo: objetos aninhados achatam em colunas com notação de ponto, listas se unem em células limpas, e o download é UTF-8 puro. Gratuito, sem cadastro, roda inteiramente no seu navegador.

Abrir o conversor de JSON para CSV
Todos os guias