JSON et YAML sont les deux formats de configuration et d'échange de données les plus utilisés en informatique moderne — API, fichiers de configuration, manifestes Kubernetes, pipelines CI/CD. Ce guide explique leurs différences et les pièges les plus fréquents.
JSON (JavaScript Object Notation) est un format texte structuré, construit autour de quelques types simples : objets (paires clé-valeur entre accolades), tableaux (entre crochets), chaînes, nombres, booléens et null. Sa syntaxe stricte et peu permissive (virgules, guillemets doubles obligatoires) en fait un format facile à analyser de façon fiable par une machine, mais plus verbeux à écrire à la main.
C'est le format de référence pour les API REST, le stockage de configuration dans de nombreux langages, et l'échange de données entre systèmes hétérogènes.
YAML (YAML Ain't Markup Language) représente les mêmes structures de données que JSON, mais avec une syntaxe basée sur l'indentation plutôt que sur des accolades et virgules — ce qui le rend généralement plus lisible et plus rapide à écrire à la main, au prix d'une plus grande sensibilité aux erreurs d'espacement.
YAML est devenu le standard de facto pour les fichiers de configuration de l'écosystème DevOps moderne : Docker Compose, Kubernetes, Ansible, GitHub Actions, GitLab CI.
| Critère | JSON | YAML |
|---|---|---|
| Lisibilité humaine | Correcte, mais verbeuse | Excellente, plus compacte |
| Commentaires | Non supportés | Supportés (#) |
| Facilité de génération/parsing machine | Très simple, peu ambigu | Plus complexe, plusieurs pièges |
| Usage typique | API, échange de données entre systèmes | Fichiers de configuration lus/édités par des humains |
En pratique, JSON est privilégié quand la donnée est échangée entre programmes (API), tandis que YAML est préféré quand un humain doit régulièrement lire ou modifier le fichier (configuration d'infrastructure).
YAML interprète automatiquement certaines chaînes comme des types spéciaux. Une valeur commeNO,YES,ONouOFFpeut être convertie en booléen selon le parseur, et une valeur ressemblant à une date (2024-01-01) peut être interprétée comme un objet date plutôt qu'une chaîne — toujours mettre entre guillemets une valeur dont le type doit rester une chaîne.
: (ex: une URL) doit être mise entre guillemets, sinon le parseur peut l'interpréter comme un nouveau mapping.Une erreur de syntaxe JSON ou YAML dans un fichier de configuration ne se manifeste généralement qu'au moment où le système tente de le charger — souvent en pleine intégration continue ou pire, lors d'un déploiement en production. Valider la syntaxe avant de committer ou de déployer permet de détecter ces erreurs immédiatement, dans un contexte où elles sont triviales à corriger.
Utiliser le formatteur JSON / YAML →Dans la quasi-totalité des cas oui, car JSON est un sous-ensemble fonctionnel de ce que YAML peut représenter. Les commentaires YAML sont en revanche perdus, puisque JSON n'a pas d'équivalent.
La cause la plus fréquente est une tabulation invisible insérée par un éditeur de texte à la place d'espaces — vérifie avec un éditeur qui affiche les caractères invisibles, ou utilise un validateur comme celui de cette page.
Non, la spécification JSON ne prévoit aucune syntaxe de commentaire — certains outils tolèrent des variantes (JSON5, JSONC) mais ce ne sont pas du JSON standard.
Il couvre les structures les plus courantes (mappings, séquences, scalaires, imbrication) suffisantes pour la majorité des fichiers de configuration. Des fonctionnalités YAML avancées (ancres, alias, types personnalisés) ne sont pas supportées.