Qual é a diferença entre YAML e JSON?

YAML e JSON são dois formatos de serialização de dados que fornecem um mecanismo de troca de dados legível por humanos. Eles formatam dados de forma padronizada para a troca entre aplicações de software. Texto nesse formato também pode ser lido por humanos. Ambos representam dados como pares de valores-chave. O JSON suporta objetos de dados como valores, enquanto o YAML não. No entanto, o YAML suporta mais tipos de dados e está mais próximo do uso da linguagem natural para permitir o uso por desenvolvedores.

Leia sobre JSON »

Representação de dados: YAML versus JSON

A aparência e a sintaxe do JSON e do YAML são semelhantes, mas ligeiramente diferentes.

À primeira vista, o formato JSON tem uma aparência mais mecânica na sua representação de dados do que o YAML. Uma mensagem JSON inclui os seguintes símbolos:

  • Chaves para objetos
  • Dois pontos para separar pares de valores-chave
  • Colchetes para matrizes 
  • Aspas para delimitar strings

O JSON foi criado com base em um pequeno subconjunto do JavaScript. Portanto, devido à sua sintaxe, os documentos JSON são semelhantes ao código de programação.
 

Diferentemente do JSON, o formato YAML se parece mais com a forma como alguém escreveria dados estruturados em papel. Ele foi projetado especificamente para facilitar a leitura para os humanos. Ele usa o seguinte:

  • Recuo para representar objetos 
  • Dois pontos para separar pares de valores-chave
  • Hifens para matrizes
  • Hashes para indicar um comentário

O YAML foi originalmente criado para simplificar o XML.

Exemplos de documentos: YAML versus JSON

Aqui estão alguns exemplos de como um documento contendo os dados do produto de uma camiseta ficaria em YAML e JSON.

YAML

JSON

tipo: Camiseta

preço: 20,00

tamanhos:

  • P
  • M
  • G

   avaliações: # Nota sobre avaliações

  • nome de usuário: user1

         classificação: 4

         created_at: 2023-04-19T12:30:00Z

  • nome de usuário: user2

         classificação: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

Principais diferenças: YAML versus JSON

Devido à sintaxe do YAML, é considerado mais fácil ler, entender e gravar um arquivo YAML do que um JSON, especialmente para quem não for um desenvolvedor. A seguir, discutiremos outras diferenças importantes.

Tipos de dados

O formato JSON suporta os seguintes tipos de dados:

  • Número
  • Booleano
  • Nulo
  • String
  • Matriz
  • Objeto (coleção de pares de valores-chave aninhados)

O formato YAML suporta todos os tipos de dados nativos de qualquer linguagem de programação dinâmica. Por exemplo, ele suporta coleções de dados aninhados feitas de sequências (listas), escalares (como números e strings) e mapeamentos (pares de valores-chave). Esse suporte permite criar estruturas de dados mais complexas. 

Suporte integrado

O JSON é amplamente usado em combinação com muitas linguagens de programação diferentes. Por exemplo, o JavaScript oferece suporte integrado para analisar o JSON. A Biblioteca Padrão do Python também inclui JSON, e uma biblioteca JSON está embutida no PHP 5.2. Da mesma forma, mais de 50 outras linguagens muito usadas oferecem suporte ao JSON por meio de vários pacotes e bibliotecas.

Por outro lado, nenhuma linguagem muito usada tem suporte integrado para YAML. Nesse caso, os desenvolvedores devem instalar e usar as bibliotecas. Dois analisadores YAML muito usados são PyYAML para Python e LibYAML para C. 

Versionamento

Você pode versionar o JSON e o YAML por meio de um software de versionamento como o Git. No entanto, pode ser mais fácil verificar e entender as alterações nos arquivos YAML entre as versões.

Comentários

Não há suporte no formato de dados JSON para comentários. Para contornar isso, os desenvolvedores devem definir um par de valores-chave para comentários.

Em um arquivo YAML, os comentários vêm depois de um símbolo de hash.

Quando usar o YAML versus JSON

Graças ao suporte abrangente e à integração com JavaScript, o JSON é um formato de serialização de dados mais popular para a maioria dos casos de uso do que o YAML. O JSON é usado extensivamente em comunicações de software distribuídas, aplicações Web, arquivos de configuração e APIs.

Embora o YAML possa parecer uma escolha melhor com base na digitação de dados e em seu formato legível por humanos, o JSON geralmente é preferido para compatibilidade cruzada. Isso ocorre porque muitas aplicações e serviços já analisam o formato de dados JSON.

Por outro lado, o YAML ganhou uma forte presença em áreas específicas da computação devido à sua legibilidade e suporte para comentários. Notavelmente, o YAML é o principal formato de serialização de dados para arquivos de configuração em muitas ferramentas e serviços de automação, DevOps e infraestrutura como código (IaC). Por exemplo, o YAML é frequentemente usado em arquivos Docker e Kubernetes.

O YAML também é usado para gravar arquivos de configuração nessas ofertas da Amazon Web Services (AWS): AWS CloudFormation, AWS Serverless Application Model (AWS SAM) e AWS CodeBuild.

Resumo das diferenças: YAML versus JSON

 

JSON

YAML

O que é isso?

Um formato de serialização de dados para trocar dados estruturados entre aplicações e serviços de software. Prioriza o uso de aplicações em relação ao uso humano. 

Um formato de serialização de dados para trocar dados estruturados entre aplicações e serviços de software. Prioriza o uso humano em relação ao uso de aplicações.

Principais casos de uso

Difundido em plataformas, linguagens, comunicações de software distribuídas, aplicações Web, arquivos de configuração e APIs.

Arquivos de configuração em várias ferramentas e serviços de automação, DevOps e infraestrutura como código (IaC).

Legibilidade

Fácil.

A mais fácil.

Tipos de dados

Número, booleano, nulo, string, matriz e objeto.

Oferece suporte a todos os tipos de dados por meio da coleta de dados aninhados que incluem sequências, escalares e mapeamentos.

Suporta comentários

Não.

Sim.

Suporta objetos de dados como valores

Sim.

Não.

Versionamento

Sim, mas não é tão simples verificar e entender as diferenças entre versões com uma olhada rápida.

Sim, e é simples verificar e entender as diferenças entre versões com uma olhada rápida.

Como a AWS pode oferecer suporte aos seus requisitos de YAML e JSON?

Todos os serviços de integração de dados da AWS podem processar os arquivos JSON. Aqui estão três serviços relevantes da AWS:

  • O AWS Glue é um serviço de integração de dados sem servidor. Use o AWS Glue para descobrir, preparar e combinar dados para análise, machine learning e desenvolvimento de aplicações.
  • O Amazon Simple Queue Service (Amazon SQS) é um serviço de enfileiramento de mensagens totalmente gerenciado. Você pode usá-lo para enviar, armazenar e receber mensagens entre componentes de software para qualquer volume. As mensagens do Amazon SQS podem conter até 256 KB de dados de texto, incluindo XML, JSON e texto não formatado.
  • O Amazon DocumentDB (compatível com o MongoDB) é um banco de dados de documentos JSON nativo totalmente gerenciado. O Amazon DocumentDB torna a operação de workloads de documentos fácil e econômica em praticamente qualquer escala, sem gerenciar a infraestrutura.

Da mesma forma, as ferramentas para desenvolvedores na AWS oferecem suporte a arquivos YAML em vários serviços de implantação. Aqui estão dois exemplos:

  • O AWS Step Functions permite criar fluxos de trabalho resilientes sem servidor usando os serviços da AWS, como AWS Lambda, Amazon Simple Notification Service (Amazon SNS) e Amazon DynamoDB. O Step Functions também oferece suporte às definições de máquina de estado YAML. Isso possibilita definir fluxos de trabalho na mesma linguagem da infraestrutura como código (IaC).
  • O AWS App2Container é uma ferramenta de linha de comando que você pode usar para migrar e modernizar aplicações Web Java e.NET em formato de contêiner. Ele gera arquivos YAML para definições de tarefas do Amazon Elastic Container Service (Amazon ECS) e implantação do Kubernetes. Ele também segue as práticas recomendadas da AWS para segurança e escalabilidade.

Comece a usar YAML e JSON na AWS criando uma conta hoje mesmo.