Ir para a ferramenta
ViewCSV
Sem upload de arquivos

Converter CSV para JSON

orders.csv· DADOS DE EXEMPLO15 linhas · 8 colunas
Tipos de valor
A detecção é feita por coluna e só quando todos os valores se encaixam, então IDs com zeros à esquerda e inteiros acima de 9.007.199.254.740.991 continuam como texto.
As colunas user.name e user.email viram um único objeto “user” com “name” e “email”.
[
  {
    "order_id": "001041",
    "customer": "Laura Costa",
    "city": "Porto Alegre",
    "product": "Desk lamp",
    "quantity": "6",
    "unit_price": "224.92",
    "order_date": "2026-01-15",
    "status": "shipped"
  },
  {
    "order_id": "001042",
    "customer": "Arthur Alves",
    "city": "Fortaleza",
    "product": "Monitor 27\"",
    "quantity": "1",
    "unit_price": "172.72",
    "order_date": "2026-02-11",
    "status": "refunded"
  },
  {
    "order_id": "001043",
    "customer": "Miguel Costa",
    "city": "Rio de Janeiro",
    "product": "Coffee beans 1kg",
    "quantity": "7",
    "unit_price": "165.86",
    "order_date": "2026-03-07",
    "status": "shipped"
  },
  {
    "order_id": "001044",
    "customer": "Gael Rodrigues",
    "city": "Belo Horizonte",
    "product": "Monitor 27\"",
    "quantity": "1",
    "unit_price": "131.36",
    "order_date": "2026-04-23",
    "status": "shipped"
  },
  {
    "order_id": "001045",
    "customer": "Alice Oliveira",
    "city": "Porto Alegre",
    "product": "USB-C cable",
    "quantity": "8",
    "unit_price": "",
    "order_date": "2026-05-25",
    "status": "shipped"
  },
  {
    "order_id": "001046",
    "customer": "Helena Souza",
    "city": "Salvador",
    "product": "Coffee beans 1kg",
    "quantity": "1",
    "unit_price": "71.08",
    "order_date": "2026-06-08",
    "status": "refunded"
  },
  {
    "order_id": "001047",
    "customer": " Laura Gomes ",
    "city": "Porto Alegre",
    "product": "Coffee beans 1kg",
    "quantity": "3",
    "unit_price": "89.84",
    "order_date": "2026-07-16",
    "status": "pending"
  },
  {
    "order_id": "001048",
    "customer": "Théo Oliveira",
    "city": "Fortaleza",
    "product": "Notebook A5",
    "quantity": "7",
    "unit_price": "49.50",
    "order_date": "2026-08-26",
    "status": "shipped"
  },
  {
    "order_id": "001049",
    "customer": "Helena Rodrigues",
    "city": "Salvador",
    "product": "Desk lamp",
    "quantity": "3",
    "unit_price": "54.27",
    "order_date": "2026-09-27",
    "status": "paid"
  },
  {
    "order_id": "001050",
    "customer": "Heitor Santos",
    "city": "Curitiba",
    "product": "Desk lamp",
    "quantity": "6",
    "unit_price": "138.90",
    "order_date": "2026-01-05",
    "status": "pending"
  },
  {
    "order_id": "001051",
    "customer": "Helena Ferreira",
    "city": "Curitiba",
    "product": "USB-C cable",
    "quantity": "7",
    "unit_price": "6.10",
    "order_date": "2026-02-03",
    "status": "refunded"
  },
  {
    "order_id": "001052",
    "customer": "Valentina Pereira",
    "city": "Belo Horizonte",
    "product": "Chair, ergonomic",
    "quantity": "3",
    "unit_price": "106.72",
    "order_date": "2026-03-09",
    "status": "shipped"
  },
  {
    "order_id": "001053",
    "customer": "Laura Alves",
    "city": "Fortaleza",
    "product": "Notebook A5",
    "quantity": "6",
    "unit_price": "239.22",
    "order_date": "2026-04-12",
    "status": "pending"
  },
  {
    "order_id": "001054",
    "customer": "Valentina Souza",
    "city": "São Paulo",
    "product": "Chair, ergonomic",
    "quantity": "9",
    "unit_price": "154.44",
    "order_date": "2026-05-25",
    "status": "pending"
  },
  {
    "order_id": "001043",
    "customer": "Miguel Costa",
    "city": "Rio de Janeiro",
    "product": "Coffee beans 1kg",
    "quantity": "7",
    "unit_price": "165.86",
    "order_date": "2026-03-07",
    "status": "shipped"
  }
]

15 linhas · 1 arquivo

Abra ou cole um arquivo CSV e o JSON aparece ao lado das opções, atualizado conforme você as altera. Por padrão, todo valor continua sendo uma string, então 00731 e IDs de 20 dígitos saem exatamente como estavam; ative a detecção de números só quando uma coluna deve virar números JSON e true/false. O arquivo é convertido no seu navegador e nunca enviado a um servidor.

Como converter CSV para JSON

  1. Abra um arquivo .csv, .tsv ou .txt, arraste-o para a ferramenta ou cole as linhas. O delimitador e a marca de ordem de byte (BOM) UTF-8 ou UTF-16 são detectados; escolha outro delimitador ou uma codificação antiga, como Windows-1252 ou Shift_JIS, em Configurações de importação.
  2. Escolha a Estrutura do JSON. A prévia mostra as primeiras 200 linhas exatamente como sairão no download.
  3. Defina Tipos de valor, Células vazias, aninhamento e recuo; depois escolha Baixar JSON ou Copiar.

Para converter vários arquivos com as mesmas configurações, escolha Lote: converter vários arquivos e selecione todos juntos: cada arquivo é convertido por vez, e os resultados são baixados em um único ZIP.

O que cada opção faz

Array de objetos (um por linha)Um objeto por linha, com as chaves vindas do cabeçalho: [{"sku": "00731", …}]. É a estrutura que a maioria das APIs e do código JavaScript espera.
Array de arrays (cabeçalho primeiro)Primeiro a linha de cabeçalho, depois cada linha como uma lista. Gera o arquivo menor e mantém a ordem das colunas de forma explícita.
Objeto com um array por coluna{"sku": ["00731", "00732"], …}: prático para bibliotecas de gráficos e ferramentas de data frame.
JSON Lines (um objeto por linha)Um objeto JSON por linha (JSON Lines), sem um array em volta. Combina com fluxos de logs, cargas no BigQuery e processamento linha a linha.
Manter todos os valores como textoCada célula vira uma string JSON, exatamente como está escrita no arquivo. É o padrão.
Detectar números e true/falseUma coluna só vira números JSON se todos os valores não vazios forem números simples que sobrevivem à conversão: sem zeros à esquerda, com no máximo 15 dígitos significativos e sem vírgula decimal. Colunas true/false viram booleanos. Datas continuam strings.
Células vaziasGrave "", null ou omita a chave naquele objeto.
Aninhar nomes de coluna com pontouser.name e user.email viram {"user": {"name": …, "email": …}}. Se um nome for ao mesmo tempo um valor e um nível acima (user e user.name), essas colunas ficam sem aninhamento e a ferramenta avisa.

Como os dados mais delicados são tratados

  • Vírgulas entre aspas, aspas ("") e quebras de linha dentro de um valor são lidas conforme a RFC 4180 e gravadas como escapes comuns de string JSON (\n, \").
  • Os nomes do cabeçalho são usados exatamente como estão, inclusive com espaços, acentos e outros sistemas de escrita. Um cabeçalho em branco vira Column 3; um repetido vira name (2), para que nenhum valor seja sobrescrito.
  • Cabeçalhos como __proto__ ou constructor são gravados como chaves comuns.
  • Uma linha com mais valores do que o cabeçalho ganha chaves extras chamadas Column 4, Column 5…; uma linha mais curta recebe valores vazios. Nada é descartado.
  • A saída com tipos nunca transforma 0012 em 12, nem um número de pedido de 19 dígitos em um decimal arredondado: uma coluna assim continua como texto.

Solução de problemas

  • Ficou tudo em uma chave só. O delimitador foi detectado errado; escolha vírgula, ponto e vírgula, tabulação ou barra vertical nas configurações de importação e abra o arquivo de novo.
  • Letras acentuadas aparecem como é. O arquivo não está em UTF-8. Escolha a codificação dele (muitas vezes Windows-1252, no caso de exportações antigas do Excel salvas como “CSV (separado por vírgula)”) nas configurações de importação.
  • Uma coluna de números continuou como texto. Pelo menos um valor não é um número simples, por exemplo 1,5, 12 kg ou um valor com zero à esquerda. Valores com vírgula decimal, comuns em planilhas brasileiras, também impedem a detecção. Pesquise a coluna no Visualizador de CSV para encontrá-lo.
  • O erro de aspas aponta um registro. Uma aspa aberta nesse registro nunca é fechada. Corrija no editor de CSV ou confira a exportação no sistema de origem.

Limites e privacidade

Arquivos de até 25 MB, 100.000 linhas ou 2 milhões de células abrem com prévia ao vivo. Arquivos maiores são convertidos em streaming: o arquivo é lido duas vezes em blocos (uma para conhecer as colunas e os tipos, outra para gravar), a prévia dá lugar a um aviso, e o download inclui todas as linhas. Cada arquivo de saída tem limite de 4 GB.

A conversão roda em um worker em segundo plano nesta aba, então a página continua respondendo e Cancelar interrompe o processo. O CSV nunca é enviado a um servidor.

Exemplo

Uma lista de produtos com um SKU com zero à esquerda e uma vírgula entre aspas, convertida com as configurações padrão (tudo como texto, array de objetos, recuo de 2 espaços). Com Detectar números e true/false, price vira 34.9 e in_stock vira true, enquanto sku continua "00731".

CSV
sku,name,price,in_stock
00731,"Desk lamp, brass",34.90,true
00732,Cable tidy,4.50,false
JSON
[
  {
    "sku": "00731",
    "name": "Desk lamp, brass",
    "price": "34.90",
    "in_stock": "true"
  },
  {
    "sku": "00732",
    "name": "Cable tidy",
    "price": "4.50",
    "in_stock": "false"
  }
]

Perguntas frequentes

Por que os números ficam entre aspas por padrão?

Porque o CSV não tem tipos: 00731, 1.50 e 2024-03-01 são apenas texto. Manter tudo como string garante que o JSON diga exatamente o que o arquivo dizia. Escolha a detecção de números quando você sabe que uma coluna guarda quantidades.

Dá para converter JSON de volta para CSV aqui?

Ainda não. Esta página só converte CSV e TSV para JSON.

JSON Lines é o mesmo que NDJSON?

Na prática, sim: os dois significam um valor JSON completo por linha, separado por caracteres de quebra de linha.

Padrões e referências