YAML ou JSON : quelle différence ?

JSON et YAML décrivent le même genre de données : objets, listes, texte, nombres, true, false et null. JSON est strict et pensé pour les programmes, YAML est souple et pensé pour les personnes qui écrivent de la configuration à la main. Ce guide les compare côte à côte, montre les règles YAML qui changent des valeurs sans prévenir et explique comment passer de l'un à l'autre sans surprise. Le convertisseur ci-dessous fonctionne dans votre navigateur : vous pouvez essayer chaque exemple au fil de la lecture.

5 min de lecture

Les mêmes données dans les deux formats

Voici une petite configuration en JSON : {"name": "shop", "port": 8080, "debug": false, "hosts": ["a.example.com", "b.example.com"]}. En YAML, les mêmes données s'écrivent avec de l'indentation au lieu d'accolades : name: shop sur une ligne, port: 8080 sur la suivante, debug: false, puis hosts: suivi de deux lignes indentées qui commencent par un tiret.

Les deux se chargent exactement dans le même objet, quel que soit le langage de programmation. La différence tient à la façon de les écrire et à ce que chaque format permet en plus.

JSONYAML
StructureAccolades et crochetsIndentation, ou accolades si vous préférez
TexteToujours entre guillemets doublesGuillemets le plus souvent facultatifs
CommentairesInterditsLignes qui commencent par #
Texte sur plusieurs lignesSeulement avec \n dans une chaîneBlocs avec | ou >
Réutiliser des partiesImpossibleAncres (&nom) et alias (*nom)
Plusieurs documents dans un fichierNonOui, séparés par une ligne de trois tirets
Usage typiqueAPI, échange de données, navigateursConfiguration : Docker Compose, Kubernetes, CI

Essayez ici : YAML en JSON

Ouvrir la page complète de l'outil

Pourquoi le YAML est agréable à écrire

Le YAML demande moins de caractères. Pas d'accolades fermantes à compter, pas de virgules à oublier entre les éléments et pas de guillemets autour de la plupart des textes. Les commentaires permettent d'expliquer pourquoi un réglage existe, c'est pourquoi les outils que l'on modifie tous les jours, comme Docker Compose, Kubernetes, GitHub Actions et Ansible, l'ont choisi.

Les ancres évitent les répétitions : vous définissez un bloc une fois avec &defaults et vous le réutilisez avec *defaults, ou vous le fusionnez dans un autre bloc avec <<: *defaults en remplaçant certaines clés. Le texte en bloc garde ses retours à la ligne, ce qui rend les scripts et les longs messages lisibles dans le fichier.

Les pièges du YAML qui modifient vos données

La liberté d'omettre les guillemets a un prix : le YAML devine le type de chaque valeur sans guillemets, et sa supposition n'est pas toujours celle que vous aviez en tête. La plupart de ces problèmes disparaissent quand le texte est entre guillemets.

  • Le problème de la Norvège : en YAML 1.1, que beaucoup d'outils utilisent encore, NO, no, yes, on et off sont des booléens. Une liste de codes pays où NO désigne la Norvège se transforme en false.
  • Les numéros de version : 1.10 devient le nombre 1.1, et 3.0 peut devenir 3. Écrivez "1.10" pour le garder en texte.
  • Les zéros initiaux : les codes postaux et références produit comme 0123 peuvent devenir des nombres, et YAML 1.1 les lit en octal, donc 0123 devient 83.
  • Les heures : en YAML 1.1, 12:30 est un nombre en base 60, soit 750.
  • Les deux-points et les dièses : une valeur qui contient ": " ou " #" se termine trop tôt ou commence un commentaire. Mettez ce genre de texte entre guillemets.
  • Les tabulations : le YAML n'accepte pas les tabulations pour indenter, et une clé indentée d'un espace de trop atterrit dans le mauvais bloc sans aucune erreur dans certains éditeurs.

Pourquoi le JSON convient mieux aux programmes

Le JSON n'a qu'une façon d'écrire chaque chose et ne devine rien : le texte est toujours entre guillemets, donc "NO" reste du texte et 1.10 est clairement un nombre. Les analyseurs sont petits, rapides et disponibles dans tous les langages, et les navigateurs lisent le JSON nativement. Le JSON est donc le choix le plus sûr dès que des données sont produites et lues par des logiciels : réponses d'API, journaux, caches et fichiers de données.

L'absence de commentaires est le reproche le plus fréquent. Certains outils acceptent du JSON avec commentaires (souvent appelé JSONC), mais les analyseurs standard le refusent, ce n'est donc pas un bon format pour des fichiers que d'autres programmes doivent lire.

Convertir entre YAML et JSON sans risque

YAML 1.2 a été conçu comme un sur-ensemble de JSON : presque tout document JSON est donc aussi du YAML valide. Dans l'autre sens, il faut un vrai analyseur, car les fonctions du YAML doivent être résolues : les ancres et les clés de fusion sont développées, le texte en bloc devient une chaîne avec \n, et plusieurs documents deviennent une liste. Les commentaires ne peuvent pas suivre, puisque le JSON n'a pas de place pour eux.

Quand vous convertissez du JSON en YAML, chaque valeur qu'un lecteur YAML pourrait mal interpréter doit être mise entre guillemets. Le convertisseur de cette page vérifie chaque texte selon les règles de YAML 1.1 et de YAML 1.2 et ne le met entre guillemets que si c'est nécessaire : yes, NO, 0123 et 1.10 reviennent donc intacts. Reconvertir le résultat avec Inverser est un moyen rapide de prouver que rien n'a changé.

Lequel choisir ?

  • Utilisez le YAML pour la configuration que des personnes écrivent et relisent à la main, surtout quand les commentaires sont utiles.
  • Utilisez le JSON pour les données que des programmes échangent, stockent ou envoient sur le réseau.
  • Utilisez le JSON quand le fichier est généré par du code, même si quelqu'un le lit ensuite.
  • Si un outil accepte les deux, comme c'est souvent le cas, gardez le format que votre équipe utilise déjà : la cohérence compte plus que les petites différences.
  • Si vous restez sur le YAML, mettez entre guillemets les textes qui ressemblent à des nombres, des dates ou à yes/no, et vérifiez vos fichiers avec un analyseur avant de les déployer.

Étape par étape

  1. Choisissez le sensSélectionnez YAML > JSON ou JSON > YAML en haut du convertisseur.
  2. Collez votre fichierCollez le contenu ou ouvrez le fichier. Exemple affiche un fichier YAML avec une ancre et une clé de fusion.
  3. Lisez les messagesSi le YAML contient une erreur, elle est indiquée avec la ligne et la colonne. Les remarques listent les tags inconnus et les commentaires laissés de côté.
  4. Vérifiez l'aller-retourCliquez sur Inverser pour reconvertir le résultat et le comparer avec votre original.

Questions fréquentes

Le JSON est-il du YAML valide ?

Presque toujours. YAML 1.2 est conçu comme un sur-ensemble de JSON, un analyseur YAML 1.2 lit donc les fichiers JSON. Les anciens analyseurs YAML 1.1 ont quelques différences, par exemple avec certaines séquences d'échappement.

Le YAML est-il plus lent que le JSON ?

Analyser du YAML demande plus de travail à cause de ses nombreuses règles, mais pour des fichiers de configuration la différence ne se remarque pas. Pour les gros volumes de données et les API, le JSON est plus rapide et plus simple.

Pourquoi mon fichier YAML contient yes mais le programme voit true ?

Le programme utilise un analyseur YAML 1.1, dans lequel yes, no, on et off sont des booléens. Mettez la valeur entre guillemets pour la garder en texte.

Puis-je garder les commentaires en convertissant du YAML en JSON ?

Non. Le JSON n'a pas de commentaires, ils sont donc supprimés. Gardez le fichier YAML comme source si les commentaires sont importants.

Mes fichiers sont-ils envoyés quand je les convertis ici ?

Non. La conversion se fait entièrement dans votre navigateur, ce qui compte pour les fichiers de configuration qui contiennent des mots de passe ou des clés.