CSV vs JSON
CSV e JSON são ambos muito usados e escolhidos por razões diferentes. Esta página põe-nos frente a frente nas coisas que decidem entre eles, e liga aos conversores para as duas direcções — todos eles a correr no seu navegador, sem que o ficheiro seja alguma vez enviado.
A resposta curta
O CSV são linhas e colunas e mais nada. O JSON são valores dentro de valores, a qualquer profundidade. Se os seus dados são mesmo uma tabela — um registo por linha, os mesmos campos de cada vez — o CSV é menor, abre em qualquer folha de cálculo e é legível por qualquer pessoa. No momento em que um registo precisa de uma lista lá dentro, ou de um objecto aninhado opcional, o CSV começa a exigir convenções que o próprio formato não consegue fazer cumprir.
A segunda diferença são os tipos. O JSON distingue o número 42, a cadeia \"42\" e o booleano true. O CSV só conhece texto, e é por isso que um zero à esquerda desaparece de um código postal e que um número longo se torna notação científica quando uma folha de cálculo adivinha mal. Se os valores têm de sobreviver intactos a uma ida e volta, o JSON é o que o pode prometer.
Na prática a escolha é-lhe muitas vezes feita pelo que está do outro lado. Uma folha de cálculo quer CSV, uma API quer JSON, e discutir com qualquer uma delas dá mais trabalho do que converter. Onde pode escolher, a pergunta que vale a pena fazer é se algo nos dados alguma vez vai precisar de uma lista dentro de um registo — porque é aí que o CSV deixa de chegar.
Lado a lado
| Propriedade | CSV | JSON |
|---|---|---|
| Guardado como | Texto puro, legível em qualquer editor | Texto puro, legível em qualquer editor |
| O que consegue guardar | Linhas e colunas | Valores aninhados dentro de valores |
| Números continuam números | Não | Sim |
| Comentários | Não | Não |
| Vários em um arquivo só | Não | Não |
| Publicado | 1972 | 2001 |
Onde diferem de facto
- Conseguem exprimir formas diferentes. JSON guarda valores dentro de valores a qualquer profundidade; o outro são linhas e colunas, e o aninhamento tem de ser simulado com convenções que não consegue fazer cumprir.
- Só JSON sabe que tipo de valor está a guardar. No outro tudo é texto, e é por isso que os zeros à esquerda somem e os números longos se tornam notação científica.
- Separam-nos 29 anos, e boa parte do que os distingue é o que se tinha aprendido pelo meio.
O que costuma correr mal
- Converter para o formato sem tipos transforma cada valor em texto. Os zeros à esquerda desaparecem, os números longos tornam-se notação científica, e as datas voltam na forma que o programa que as lê adivinhar.
Qual escolher
- Escolha CSV quando
- Escolha CSV para dados tabulares que vão para uma folha de cálculo, e onde o destinatário possa ser uma pessoa em vez de um programa.
- Escolha JSON quando
- Escolha JSON para tudo o que seja aninhado, tudo com campos opcionais e tudo onde um número tenha de continuar a ser um número.
Converter entre os dois
Perguntas frequentes
- Porque é que converter CSV para JSON põe todos os meus números entre aspas?
- Porque o CSV não leva tipos, pelo que um conversor não pode saber se 007 é um número, uma cadeia ou um código de produto. Adivinhar corromperia alguns ficheiros em silêncio, o que é pior do que pôr aspas. Onde um conversor oferece deduzir tipos, essa opção faz exactamente esta adivinhação, e vale a pena verificar o resultado antes de confiar nele.
- Qual é melhor, CSV ou JSON?
- Nenhum, em geral — se um fosse simplesmente melhor, o outro teria desaparecido. São bons em coisas diferentes, e a resposta curta acima diz qual em quê. A pergunta útil é o que o ficheiro tem de fazer a seguir: ser editado, ser publicado, ser aberto por outra pessoa, ou caber dentro de um limite de tamanho.
- Converter entre eles perde alguma coisa?
- Depende da direcção. Converter para um formato que guarda tudo não perde nada mas também não recupera nada; converter para um que descarta detalhe perde um pouco de cada vez. A tabela acima diz qual destes dois faz o quê.
- Posso converter de volta depois?
- O ficheiro converte-se de volta, mas se volta inalterado depende da direcção. Entre dois formatos que guardam tudo, uma ida e volta é sem perdas. Onde um dos dois descarta detalhe, esse detalhe desapareceu e a viagem de regresso não o pode inventar.
- Posso usar os dois?
- Numa página web, muitas vezes sim, e normalmente é a resposta certa: sirva o formato moderno mais pequeno e indique um mais antigo como alternativa, para que cada navegador leve o que entende. Para um ficheiro que entrega a uma pessoa, escolha um — aquele que ela consiga abrir.
- Qual é que o meu software suporta?
- A tabela lado a lado acima diz que navegadores leem cada um, que é a parte que mais varia. O suporte em computador é mais difícil de resumir em geral e costuma andar anos atrás dos navegadores, pelo que se o ficheiro vai para outra pessoa, o mais antigo e mais amplamente lido dos dois é a escolha mais segura.
- Converter entre eles é grátis?
- Sim, sem conta e sem limite de quantos ficheiros converte. Todos os conversores ligados a partir desta página correm no seu navegador: o ficheiro é lido do seu dispositivo, convertido por código a correr nele, e devolvido como transferência.
- O meu ficheiro é enviado?
- Não. Aqui não existe servidor de conversão nenhum para onde o enviar, e não há serviço de terceiros envolvido. Pode confirmá-lo você mesmo: abra as ferramentas de programador do navegador, mude para o painel de Rede sem filtro, e faça uma conversão — nenhum pedido leva o seu ficheiro.