Ir para o conteúdo principal

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

JSON e YAML comparados nas propriedades que os separam.
PropriedadeJSONYAML
Guardado comoTexto puro, legível em qualquer editorTexto puro, legível em qualquer editor
O que consegue guardarValores aninhados dentro de valoresValores aninhados dentro de valores
Números continuam númerosSimSim
ComentáriosNãoSim
Vários em um arquivo sóNãoSim
Publicado20012001

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.

A publicidade neste site

A publicidade paga este site. Os anúncios podem guardar cookies para escolher o que lhe mostrar e para não se repetirem. Os seus ficheiros não têm nada a ver com isso: nunca saem do navegador, seja qual for o botão que carregar, e todas as ferramentas funcionam nos dois casos.

O que isto abrange