JSON ou YAML
L’essentiel : JSON délimite avec des accolades et YAML avec l'indentation : JSON pour les machines, YAML pour les humains qui éditent de la configuration. Commentaires, ancres et structure multi-documents ne survivent pas.

L'essentiel : utilisez JSON pour les données machine-à-machine et YAML pour la configuration que des humains éditent ; préférez YAML quand il faut des commentaires, du texte multi-ligne ou des ancres, et JSON quand chaque langage doit parser la même charge utile sans ambiguïté.
Côte à côte
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
Même structure. YAML abandonne la ponctuation et gagne une place pour un commentaire.
Où ils diffèrent
| JSON | YAML | |
|---|---|---|
| Structure | Accolades et virgules | Indentation |
| Commentaires | Aucun | Oui |
| Chaînes | Guillemets doubles, échappement requis | Généralement nues |
| Texte multi-ligne | Échappements \n ou tableaux |
Scalaires de bloc ` |
| Réutilisation | Aucune | Ancres & et alias * |
| Documents multiples | Envelopper dans un tableau | Séparateurs --- |
| Vitesse de parsing | Rapide | Plus lente, règles d'indentation |
| Ambiguïté | Très faible | no interprété comme booléen, indentation décalée |
Cette dernière ligne est le vrai coût de YAML. En YAML 1.1, country: NO donne le booléen false, et version: 1.0 peut devenir un flottant. JSON n'a aucune typisation implicite.
Choisir
JSON : corps de requête et de réponse, messages service-à-service, colonnes JSON dans les bases de données, tout ce qui doit parser identiquement dans chaque langage.
YAML : les écosystèmes où c'est le défaut (Kubernetes, Ansible, GitHub Actions, Docker Compose) ; la configuration qui a besoin d'explications ; les fichiers dominés par du texte long comme les certificats, scripts ou SQL.
Ce que la conversion perd
YAML → JSON : tous les commentaires, la réutilisation par ancres (étendue en doublons), tous les documents sauf le premier, et l'orthographe originale des dates et booléens.
JSON → YAML : la distinction chaîne/nombre s'affaiblit, donc "8080" et 8080 ont tous deux besoin de guillemets explicites pour rester sûrs.
Convertissez pour les migrations et l'inspection ponctuelle. Ne maintenez pas le même fichier dans deux formats comme vues parallèles.
FAQ
Comment décider entre JSON et YAML ?
Commencez par qui lit et maintient le fichier : utilisez JSON quand un programme le génère, qu'il franchit des frontières de langages et qu'il doit parser de façon prévisible ; utilisez YAML quand un humain l'édite et a besoin d'explications de champs ou de long texte multi-ligne. Ils se convertissent l'un en l'autre, mais ne maintenez pas la même configuration dans les deux formats à long terme.
Pourquoi YAML produit-il plus d'ambiguïté de types ?
YAML a une typisation implicite, donc des valeurs comme NO, on ou 1.0 peuvent devenir des booléens, dates ou nombres. JSON n'a que des types explicites : une chaîne doit être entre guillemets, ce qui rend le parsing plus prévisible entre langages.
Les commentaires et ancres doivent-ils survivre à une conversion YAML vers JSON ?
Non. Les commentaires, ancres et documents multiples de YAML ne peuvent pas être représentés en JSON ; les ancres sont étendues en contenu dupliqué. Si vous devez les préserver, utilisez une bibliothèque YAML avec une API Document au lieu d'un aller-retour par objet.