Quelle est la différence entre YAML et JSON ?

YAML et JSON sont deux formats de sérialisation de données qui fournissent un mécanisme d'échange de données lisible par l'homme. Ils mettent en forme les données de manière standardisée pour les échanges entre les applications logicielles, et leur texte est également lisible par les humains. Les deux représentent les données sous forme de paires clé-valeur. JSON prend en charge les objets de données en tant que valeurs, contrairement à YAML. Cependant, YAML prend en charge davantage de types de données et utilise davantage le langage naturel pour faciliter l'utilisation par les développeurs.

En savoir plus sur JSON »

Représentation des données : YAML vs. JSON

L'apparence et la syntaxe de JSON et de YAML sont similaires, mais légèrement différentes.

Au premier coup d'œil, JSON ressemble davantage à un format machine dans sa représentation des données que YAML. Un message JSON inclut les symboles suivants :

  • Accolades pour les objets
  • Deux points pour séparer les paires clé-valeur
  • Crochets pour les tableaux 
  • Guillemets droits pour entourer des chaînes de caractères

JSON a été créé à partir d'un petit sous-ensemble de JavaScript. Ainsi, sa syntaxe fait en sorte que les documents JSON ressemblent à du code de programmation.
 

Contrairement au format JSON, le format YAML ressemble davantage à la façon dont quelqu'un écrirait des données structurées sur papier. Il a été spécialement conçu pour faciliter la lecture par les humains. Il utilise les éléments suivants :

  • Indentation pour représenter les objets 
  • Deux points pour séparer les paires clé-valeur
  • Traits d'union pour les tableaux
  • Dièses pour indiquer un commentaire

YAML a été conçu à l'origine pour simplifier le XML.

Exemples de documents : YAML vs. JSON

Voici des exemples de ce à quoi ressemblerait un document contenant les données de produit d'une chemise aux formats YAML et JSON.

YAML

JSON

type: T-Shirt

prix: 20,00

tailles:

  • S
  • M
  • L

   avis: # Remarque sur les avis

  • nom_d_utilisateur: utilisateur1

         note: 4

         date_de_création: 2023-04-19T12:30:00Z

  • nom_d_utilisateur: utilisateur2

         note: 5

         date_de_création: 2023-05-02T15:00:00Z

{

  "produit": {

    "type": "T-Shirt",

    "prix": 20.00,

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

    "avis": {

      { "nom_d_utilisateur": "utilisateur1", "note": 4, "date_de_création": "2023-04-19T12:30:00Z" },

      { "nom_d_utilisateur": "utilisateur2", "note": 5, "date_de_création": "2023-05-02T15:00:00Z" }

    }

  }

}

Principales différences : YAML vs. JSON

En raison de la syntaxe de YAML, il est considéré comme plus facile de lire, de comprendre et d'écrire un fichier YAML qu'un fichier JSON, en particulier pour les non-développeurs. Nous discutons d'autres différences clés ci-dessous.

Types de données

Le format JSON prend en charge les types de données suivants :

  • Numéro
  • Booléen
  • Valeur nulle
  • Chaîne de caractères
  • Tableau
  • Objet (collection de paires clé-valeur imbriquées)

Le format YAML prend en charge tous les types de données natifs de tout langage de programmation dynamique. Par exemple, il prend en charge les collections de données imbriquées constituées de séquences (listes), de scalaires (tels que des nombres et des chaînes de caractères) et de mappages (paires clé-valeur). Cette prise en charge vous permet de créer des structures de données plus complexes. 

Support intégré

JSON est largement utilisé en combinaison avec de nombreux langages de programmation. Par exemple, JavaScript offre un support intégré pour analyser JSON. La bibliothèque standard Python inclut également JSON, et une bibliothèque JSON est intégrée à PHP 5.2. De même, plus de 50 autres langages populaires prennent en charge JSON via divers packages et bibliothèques.

En revanche, aucun langage populaire ne prend en charge YAML de manière intégrée. Les développeurs doivent donc installer et utiliser des bibliothèques. Les deux analyseurs YAML les plus populaires sont PyYAML pour Python et LibYAML pour C. 

Gestion des versions

Vous pouvez versionner à la fois JSON et YAML via un logiciel de gestion des versions tel que Git. Cependant, il est considéré comme plus facile d'analyser et de comprendre les modifications apportées aux fichiers YAML entre les versions.

Commentaires

Le format de données JSON ne prend pas en charge les commentaires. Les développeurs doivent définir une paire clé-valeur de commentaire pour contourner ce problème.

Dans un fichier YAML, les commentaires sont précédés d'un symbole dièse.

Quand utiliser YAML vs. JSON

Grâce à son support généralisé et à son intégration avec JavaScript, JSON est un format de sérialisation de données plus populaire que YAML dans la plupart des cas d'utilisation. JSON est largement utilisé dans les communications logicielles distribuées, les applications Web, les fichiers de configuration et les API.

Bien que YAML puisse sembler être un meilleur choix compte tenu de la saisie des données et de son format lisible par l'homme, le format JSON est généralement préféré pour des raisons de compatibilité croisée. En effet, de nombreuses applications et services analysent déjà le format de données JSON.

De son côté, YAML a acquis une forte présence dans certains domaines de l'informatique en raison de sa lisibilité et de sa prise en charge des commentaires. YAML est notamment le principal format de sérialisation des données pour les fichiers de configuration dans de nombreux outils et services d'automatisation, de DevOps et d'infrastructure en tant que code (IaC). Par exemple, YAML est souvent utilisé dans les fichiers Docker et Kubernetes.

YAML est également utilisé pour écrire des fichiers de configuration dans les offres Amazon Web Services (AWS) : AWS CloudFormation, Modèle d'application sans serveur AWS (AWS SAM) et AWS CodeBuild.

Résumé des différences : YAML vs. JSON

 

JSON

YAML

De quoi s'agit-il ?

Format de sérialisation de données permettant d'échanger des données structurées entre des applications logicielles et des services. Priorise l'utilisation des applications par rapport à l'utilisation humaine. 

Format de sérialisation de données permettant d'échanger des données structurées entre des applications logicielles et des services. Priorise l'utilisation humaine par rapport à l'utilisation des applications.

Principaux cas d'utilisation

Très répandu sur les plateformes, les langages de programmation, les communications logicielles distribuées, les applications Web, les fichiers de configuration et les API.

Fichiers de configuration dans de nombreux outils et services d'automatisation, de DevOps et d'infrastructure en tant que code (IaC).

Lisibilité

Facile.

Le plus simple.

Types de données

Nombre, booléen, valeur nulle, chaîne de caractères, tableau et objet.

Prend en charge tous les types de données grâce à des collections de données imbriquées comprenant des séquences, des scalaires et des mappages.

Supporte les commentaires

Non.

Oui.

Prend en charge les objets de données en tant que valeurs

Oui.

Non.

Contrôle de version

Oui, mais il n'est pas aussi simple d'analyser et de comprendre les différences entre les versions en un coup d'œil.

Oui, et il est facile d'analyser et de comprendre les différences entre les versions en un coup d'œil.

Comment AWS peut-il répondre à vos exigences YAML et JSON ?

Tous les services d'intégration de données AWS peuvent traiter les fichiers JSON. Voici trois services AWS pertinents :

  • AWS Glue est un service d'intégration de données sans serveur. Vous pouvez utiliser AWS Glue pour découvrir, préparer et combiner des données pour l'analytique, le machine learning et le développement d'applications.
  • Amazon Simple Queue Service (Amazon SQS) est un service de file d'attente de messages entièrement géré. Vous pouvez l'utiliser pour envoyer, stocker et recevoir des messages entre les composants logiciels, quel que soit le volume. Les messages Amazon SQS peuvent contenir jusqu'à 256 Ko de données sous forme de texte, y compris XML, JSON et du texte non formaté.
  • Amazon DocumentDB (compatible avec MongoDB) est un service de base de données document JSON natif entièrement géré. Amazon DocumentDB facilite et rentabilise l'exploitation de charges de travail de documents critiques à pratiquement n'importe quelle échelle, sans avoir à gérer d'infrastructure.

De même, les outils pour développeurs sur AWS prennent en charge les fichiers YAML dans plusieurs services de déploiement. En voici deux exemples :

  • AWS Step Functions vous permet de créer des flux de travail sans serveurs résilients à l'aide de service AWS tels que AWS Lambda, Amazon Simple Notification Service (Amazon SNS) et Amazon DynamoDB. Step Functions prend également en charge les définitions de machines à états YAML. Cela permet de définir des flux de travail dans le même langage que celui de votre infrastructure en tant que code (IaC).
  • AWS App2Container est un outil de ligne de commande que vous pouvez utiliser pour migrer et moderniser des applications Web Java et .NET au format conteneur. Il génère des fichiers YAML pour les définitions de tâches Amazon Elastic Container Service (Amazon ECS) et les déploiements Kubernetes. Il suit également les meilleures pratiques d'AWS en matière de sécurité et de capacité de mise à l'échelle.

Commencez à utiliser YAML et JSON sur AWS en créant un compte dès aujourd'hui.