# Conversor de JSON para CSV online

> O conversor de JSON para CSV transforma uma lista de objetos JSON em uma tabela, com uma linha para cada objeto e uma coluna para cada chave. Você escolhe o separador (vírgula, ponto e vírgula ou tabulação), pode achatar objetos aninhados e baixar o resultado. A conversão é feita no seu navegador, sem enviar os dados a nenhum servidor.

- Endereço oficial: https://pradev.com.br/conversor-json-para-csv
- Categoria: JSON, dados e formatadores
- Tipo: Conversor
- Atualizado em: 2026-09-30
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Cole o JSON no campo da esquerda, ou clique em Abrir arquivo. Ele deve ser uma lista de objetos.
2. Escolha o separador. Para abrir no Excel em português, use ponto e vírgula.
3. Deixe marcado Achatar objetos aninhados se quiser uma coluna para cada campo interno (por exemplo, endereco.rua).
4. Clique em Copiar resultado ou em Baixar arquivo.

## Como funciona

A primeira linha do CSV traz os nomes das colunas, que são as chaves de todos os objetos, na ordem em que aparecem. Se um objeto não tem uma das chaves, a célula fica vazia. Valores nulos também viram células vazias.

O CSV é uma tabela plana, então o que é aninhado precisa de um tratamento. Com a opção de achatar, um objeto dentro de outro vira colunas com o nome unido por ponto, como endereco.rua. Listas, e objetos quando a opção está desligada, são gravados como JSON dentro da célula.

Células com o separador, aspas, quebra de linha ou espaços nas pontas vão entre aspas, e as aspas internas são duplicadas, como manda a RFC 4180. O CSV não guarda tipos: números, textos e booleanos ficam todos como texto, e ao ler de volta é preciso decidir quais colunas são números.

### Exemplo

```text
JSON: [{"nome":"Ana","end":{"cidade":"Recife"}},{"nome":"Bia","idade":25}]
CSV:
nome,end.cidade,idade
Ana,Recife,
Bia,,25
```

## Em código

Para gerar em código um CSV que o Excel em português abre certo, use ponto e vírgula, vírgula decimal e o BOM no início do arquivo.

```javascript
// Monta um CSV que o Excel em português abre certo: ponto e vírgula, vírgula
// decimal e BOM para reconhecer o UTF-8
function csvParaExcel(linhas) {
  const colunas = Object.keys(linhas[0]);
  const celula = (v) => {
    const s = v == null ? '' : typeof v === 'number' ? String(v).replace('.', ',') : String(v);
    return /[;"\r\n]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
  };
  const texto = [colunas, ...linhas.map((l) => colunas.map((c) => l[c]))]
    .map((campos) => campos.map(celula).join(';'))
    .join('\r\n');
  return '﻿' + texto;
}
```

_JavaScript_

```python
import csv


def ler_csv_excel(caminho: str) -> list[dict]:
    # utf-8-sig ignora o BOM que o Excel grava no começo do arquivo
    with open(caminho, encoding="utf-8-sig", newline="") as f:
        return list(csv.DictReader(f, delimiter=";"))


def escrever_csv_excel(caminho: str, linhas: list[dict]) -> None:
    with open(caminho, "w", encoding="utf-8-sig", newline="") as f:
        w = csv.DictWriter(f, fieldnames=list(linhas[0]), delimiter=";")
        w.writeheader()
        w.writerows(linhas)
```

_Python. Escreve e lê CSV do Excel, com o BOM._

```php
<?php
function lerCsvExcel(string $caminho): array
{
    $f = fopen($caminho, 'r');
    if (fread($f, 3) !== "\xEF\xBB\xBF") {
        rewind($f); // não tinha BOM: volta ao começo
    }
    $cabecalho = fgetcsv($f, null, ';', '"', '');
    $linhas = [];
    while (($campos = fgetcsv($f, null, ';', '"', '')) !== false) {
        if ($campos !== [null]) { // pula linhas em branco
            $linhas[] = array_combine($cabecalho, $campos);
        }
    }
    fclose($f);
    return $linhas;
}
```

_PHP. Lê o CSV salvo pelo Excel._

## Perguntas frequentes

### Como abrir o CSV no Excel com os acentos certos?

Use o botão Baixar arquivo, que grava o CSV em UTF-8 com a marca BOM, e o Excel reconhece os acentos. Se copiar e colar o texto em um arquivo seu, salve em UTF-8 com BOM ou importe pela opção de dados de texto/CSV, escolhendo a codificação UTF-8.

### Por que o Excel abre tudo em uma coluna só?

Porque o Excel em português espera ponto e vírgula como separador, já que a vírgula é o separador decimal. Escolha Ponto e vírgula na lista de separadores e gere o CSV de novo.

### O que acontece com listas e objetos dentro do JSON?

Objetos aninhados viram colunas com nomes como endereco.rua, se a opção de achatar estiver marcada. Listas são gravadas como JSON dentro de uma célula, porque uma tabela plana não tem como representar vários valores em um campo.

### Posso usar o CSV gerado com dados de terceiros sem cuidado?

Com cuidado. Planilhas podem executar como fórmula uma célula que começa com =, +, - ou @. Se os dados vêm de fora, revise essas células antes de abrir o arquivo no Excel ou no Google Planilhas. A ferramenta não altera o conteúdo das células.

## Fontes

- [RFC 4180: o formato CSV](https://www.rfc-editor.org/rfc/rfc4180)
- [RFC 8259: o formato JSON](https://www.rfc-editor.org/rfc/rfc8259)

## Guias

- [CSV no Excel em português: ponto e vírgula, acentos e zeros à esquerda](https://pradev.com.br/guias/csv-excel-ponto-e-virgula-acentos): Por que o CSV abre numa coluna só ou com acentos quebrados no Excel em português e como gerar e ler CSV certo em JavaScript, Python e PHP, com código testado.

## Ferramentas relacionadas

- [Conversor CSV para JSON](https://pradev.com.br/conversor-csv-para-json): Converta CSV em JSON online: detecta o separador (vírgula ou ponto e vírgula) e usa o cabeçalho como chaves. Grátis, no navegador.
- [Formatador JSON](https://pradev.com.br/formatador-json): Formate, indente, minifique e valide JSON online. Mostra a linha e a coluna do erro. Grátis, e o que você cola não sai do navegador.
- [Validador JSON](https://pradev.com.br/validador-json): Valide JSON online e veja a linha e a coluna do erro, o tipo e a profundidade. Grátis, e o que você cola não sai do navegador.
- [Conversor de Timestamp Unix](https://pradev.com.br/timestamp-converter): Converta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp. Grátis, com o seu fuso horário e em UTC.
- [Testador de Regex](https://pradev.com.br/regex-tester): Teste expressões regulares online: destaque dos casamentos, grupos e flags. Usa o motor do JavaScript. Grátis, direto no navegador.
- [Comparador JSON](https://pradev.com.br/comparador-json): Compare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada. A ordem das chaves não conta. Grátis.
