"Pourquoi YAML est-il si facile à lire, mais pourquoi JSON a-t-il conquis le trône de l'échange de données ?"
"Où YAML est-il fort et pourquoi JSON ne pouvait-il pas perdre ?"
🔥 1. Le début de la guerre des formats de données
Il était une fois, les programmeurs avaient besoin d'un moyen de stocker et d'échanger des données.
Au début, XML occupait le trône.
<person>
<name>Alice</name>
<age>25</age>
<skills>
<skill>Python</skill>
<skill>Django</skill>
</skills>
</person>
Mais XML était trop verbeux et lourd, et difficile à lire.
C'est alors que sont apparus JSON et YAML.
🤖 2. JSON : Conquérir le trône de l'échange de données
En 2001, Douglas Crockford a présenté le JSON inspiré de la représentation d'objet JavaScript.
"Un format d'échange de données simple, léger et facile à comprendre pour les machines !"
L'objectif de JSON était clair :
✅ Facile à lire pour les humains, mais encore mieux pour les ordinateurs
✅ Optimisé pour le transfert de données entre le navigateur et le serveur
✅ Intégration naturelle avec les langages orientés objet (JavaScript, Python, etc.)
Exemple de JSON :
{
"name": "Alice",
"age": 25,
"skills": ["Python", "Django"]
}
- Il était possible d'exprimer la structure de données uniquement avec
{}
et[]
, - Étant donné que JavaScript dans le navigateur pouvait traiter JSON directement, cela a rapidement gagné en popularité.
- En particulier, en devenant le standard des formats de données dans les API REST, JSON a conquis le trône.
🧐 3. YAML : Un format de données facile à comprendre pour les humains
Cependant, il y avait des personnes qui voulaient un format plus lisible que JSON.
"Ne serait-il pas mieux d'exprimer la structure des données sans accolades ni guillemets superflus ?"
En 2001, YAML (Ain't Markup Language) est donc apparu.
name: Alice
age: 25
skills:
- Python
- Django
Caractéristiques de YAML :
✅ Facile à lire pour les humains (propre sans accolades ni guillemets !)
✅ Supporte les commentaires (possible d'utiliser #
)
✅ Pratique pour les fichiers de configuration
Pour cette raison, YAML s'est imposé comme le champion des fichiers de configuration.
Il est largement utilisé comme format par défaut dans des domaines comme Kubernetes, Docker, Ansible, CI/CD, et GitHub Actions !
Cependant, dans le marché de l'échange de données, YAML n'a pas pu dépasser JSON.
Pourquoi donc ? 🤔
🤯 4. Pourquoi YAML n'a-t-il pas pu dépasser JSON ?
YAML aurait pu être plus populaire si facile à lire, mais ce n'est pas ce qui s'est passé…
✅ Raison pour laquelle JSON a triomphé :
1. La syntaxe est trop libre ?
- JSON a une structure claire avec {}
et []
, mais,
- YAML utilise l'indentation pour exprimer sa structure, créant ainsi plus de chances d'erreurs.
- Une seule mauvaise espace peut causer une erreur ! (En particulier le problème Tab vs Space
de YAML 🤯)
- Vitesse de parsing lente
- JSON peut être rapidement analysé, tandis que
- YAML, étant plus flexible dans sa syntaxe, implique plus d'interprétations, ce qui ralentit son traitement.
-
Lors du traitement de grandes quantités de données, il est moins efficace que JSON.
-
YAML présente des problèmes de sécurité
- YAML peut contenir du code exécutable (
!python/object
), ce qui
implique des risques de sécurité (RCE, exécution de code à distance). -
JSON est simplement des données, donc sûr !
-
Pas pris en charge par défaut dans les navigateurs
- JSON est la structure d'objet de base de JavaScript, tandis que
- YAML nécessite l'utilisation de bibliothèques séparées.
En fin de compte, JSON a été choisi comme standard pour le web et l'échange de données.
🚀 5. Cependant, YAML a conquis le trône des fichiers de configuration !
Cependant, cela ne signifie pas que YAML a disparu. Alors que JSON est devenu le standard pour l'échange de données, YAML est devenu le standard pour les fichiers de configuration.
🔥 Raisons pour lesquelles YAML est puissant :
- Support des commentaires (#) → pratique pour écrire des fichiers de configuration
- Facile à lire et à modifier
- Utilisation comme format clé dans DevOps, notamment Kubernetes, Docker, Ansible, etc.
Exemples d'utilisation réels :
- docker-compose.yml
- kubernetes.yml
- github-actions.yml
- ansible-playbook.yml
Cependant, pour utiliser YAML pour l'échange de données, il y a beaucoup de points à garder à l'esprit. En particulier, même dans le Django Rest Framework (DRF), vous pouvez définir la méthode de sérialisation sur YAMLRenderer, mais la valeur par défaut reste JSONRenderer.
from rest_framework.renderers import JSONRenderer, YAMLRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
class ExampleView(APIView):
renderer_classes = [JSONRenderer, YAMLRenderer]
def get(self, request):
data = {"message": "Bonjour, YAML !"}
return Response(data)
Cependant, la plupart des API utilisent JSON par défaut ! Parce que YAML n'est pas largement utilisé à cause de problèmes de vitesse de parsing et de sécurité.
🎯 6. Conclusion : JSON vs YAML, lequel est le meilleur ?
✅ Quand choisir JSON :
- API web, échange de données (rapidité & sécurité importantes !)
- Stockage de données NoSQL
- Utilisation directe dans un navigateur
✅ Quand choisir YAML :
- Fichiers de configuration (Kubernetes, Docker, CI/CD)
- Rédaction de documents faciles à lire
- Tâches liées à DevOps
Résumé en une ligne :
🚀 "JSON est le roi de l'échange de données, YAML est le roi des fichiers de configuration !"
Add a New Comment