JSON vs YAML
JSON e YAML 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
Exprimem as mesmas formas — o mesmo aninhamento, os mesmos valores — e diferem em como se escrevem e em quem as tem de ler. O YAML larga as chavetas e as aspas e deixa a indentação fazer o trabalho, o que torna um ficheiro de configuração muito mais agradável de editar à mão. Permite também comentários, que o JSON não tem, e para um ficheiro de configuração esse é muitas vezes o argumento decisivo.
A vantagem do JSON é ser aborrecido. Há uma só maneira de o escrever, todas as linguagens o interpretam de forma idêntica, e nenhuma mudança de espaçamento lhe pode alterar o significado. O YAML tem subtilezas suficientes nas suas regras — indentação, tipagem implícita, valores como `no` e `on` — para que um ficheiro possa significar algo diferente daquilo que aparenta.
Um arranjo comum é escrever YAML e gerar JSON a partir dele, mantendo os comentários e a legibilidade onde as pessoas trabalham e entregando aos programas a versão inequívoca. Funciona bem enquanto o YAML for a fonte de verdade: converter no outro sentido produz um ficheiro com a forma intacta e sem um único comentário.
Lado a lado
| Propriedade | JSON | YAML |
|---|---|---|
| Guardado como | Texto puro, legível em qualquer editor | Texto puro, legível em qualquer editor |
| O que consegue guardar | Valores aninhados dentro de valores | Valores aninhados dentro de valores |
| Números continuam números | Sim | Sim |
| Comentários | Não | Sim |
| Vários em um arquivo só | Não | Sim |
| Publicado | 2001 | 2001 |
Onde diferem de facto
- Só YAML tem sintaxe para comentários. Converter para longe dele perde todas as explicações do ficheiro e guarda todos os dados.
- Só YAML consegue guardar vários documentos num ficheiro, o que conta quando uma conversão tem mais do que uma coisa para escrever.
- São quase contemporâneos, e é por isso que se sobrepõem tanto.
O que costuma correr mal
- Os comentários não sobrevivem num formato sem sintaxe para eles. Os dados chegam intactos e toda a explicação desapareceu, o que torna essa direcção de facto de sentido único.
Qual escolher
- Escolha JSON quando
- Escolha JSON para tudo o que um programa escreva ou leia, para APIs, e onde uma leitura inequívoca conte mais do que a legibilidade.
- Escolha YAML quando
- Escolha YAML para configuração que uma pessoa vai editar, onde os comentários e a falta de pontuação valem mais do que o rigor.
Converter entre os dois
Perguntas frequentes
- Os comentários perdem-se ao converter YAML para JSON?
- Sim, e não há como contornar: o JSON não tem sintaxe nenhuma para um comentário, pelo que não há para onde os levar. Isso torna a conversão de sentido único na prática — os dados sobrevivem, a explicação deles não. Guarde o YAML se os comentários interessam.
- Qual é melhor, JSON ou YAML?
- 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.