Conversor de CSV e JSON
Converte CSV num array JSON de objetos ou arrays, ou JSON de volta para CSV. Deteta o separador e lê ficheiros Excel com ponto e vírgula e vírgula decimal.
Exemplos de código
Copie estes exemplos para o seu próprio projeto. Cada um usa apenas a biblioteca padrão da linguagem, por isso não há nada para instalar.
const text = 'name,city\nAnn,Utrecht\nBob,"Den Haag, NL"\n'
const trimmed = text.trimEnd()
const records = [[]]
for (const match of trimmed.matchAll(/("(?:[^"]|"")*"|[^,\n]*)(,|\n|$)/gu)) {
if (match.index === trimmed.length) break
const [, field, end] = match
records.at(-1).push(field.startsWith('"') ? field.slice(1, -1).replaceAll('""', '"') : field)
if (end === '\n') records.push([])
}
const [header, ...rows] = records
const objects = rows.map((row) => Object.fromEntries(header.map((name, i) => [name, row[i]])))
console.log(JSON.stringify(objects))O que faz
Converte CSV num array JSON e JSON de volta para CSV. Lê CSV segundo a RFC 4180: campos entre aspas, aspas duplas e quebras de linha dentro de um campo.
Como usar
- Cole CSV ou JSON, ou largue um ficheiro.
- Escolha CSV para JSON ou JSON para CSV. Deixe separador e decimais em Detetar, ou defina-os você.
- Copie ou transfira o resultado, ou use Usar saída como entrada para o tornar a próxima entrada.
Exemplos
O CSV nome;preço / queijo;12,50 passa a [{"nome": "queijo", "preço": 12.5}], e com Linha de cabeçalho desligada, a [["nome", "preço"], ["queijo", 12.5]].
Bom saber
- Com a linha de cabeçalho, cada linha passa a ser um objeto com os nomes das colunas como chaves; uma linha com outro número de campos é indicada pelo seu número.
- O separador é detetado nas primeiras linhas: vírgula, ponto e vírgula, tabulação ou barra vertical. O Excel com ponto e vírgula e vírgula decimal é lido por Detetar como 12.5.
- Um valor só passa a número se for lido de volta igual, por isso
007,1.50e números muito longos continuam texto. Desative a leitura de números para manter tudo como texto. - JSON para CSV precisa de um array de objetos (as colunas são a união das chaves) ou de um array de arrays. Os valores aninhados são escritos como texto JSON.
Como é lido um ficheiro CSV?
Segundo a RFC 4180: os campos são separados por um separador, um campo entre aspas pode conter esse separador e quebras de linha, e umas aspas lá dentro escrevem-se duas vezes. O separador é detetado nas primeiras linhas: vírgula, ponto e vírgula, tabulação ou barra vertical.
Perguntas frequentes
Porque é que os meus números passam a texto, ou ao contrário?
Um valor só passa a número se for lido de volta exatamente igual, por isso 007, 1.50 e números muito longos continuam texto. Desative “Ler números e true/false” para manter tudo como texto.
O que é o formato Excel com ponto e vírgula?
O Excel em Portugal escreve pontos e vírgulas entre os campos e uma vírgula como marca decimal. Com separador ou decimais em “Detetar”, 12,50 é lido como 12.5, e JSON para CSV escreve um ficheiro com ponto e vírgula se escolher a vírgula decimal.
Os meus dados são enviados para algum lado?
Não. A conversão acontece no seu navegador. O que cola nunca é enviado para os nossos servidores.