JSON est minimaliste et déterministe, ce qui réduit radicalement l’ambiguïté et les erreurs.
Sa grammaire tient en peu de règles et son modèle de données est clair: objet, tableau, chaîne, nombre, booléen, null — six types, pas de magie. Pas de conversions implicites (« yes »/« no » qui deviennent booléens), pas d’ancres ni d’alias, pas de dépendance à l’indentation pour le sens. Cette austérité volontaire facilite la relecture, la mise en forme automatique et la génération de code. Résultat: moins de surprises à l’exécution et une DX plus stable en CI/CD.
JSON se parse et se sérialise plus vite dans la plupart des runtimes modernes grâce à une grammaire simple et hautement optimisable.
Les moteurs comme V8, Go ou Java disposent d’implémentations natives ultra-optimisées de JSON.parse/encode. La simplicité syntaxique permet un parsing linéaire en un seul passage et une allocation mémoire prévisible, avantageuse à l’échelle des microservices et sur mobile. En flux (streaming), JSON s’intègre naturellement aux pipelines, journaux et API temps réel (JSON Lines, SSE). À performance égale, la prévisibilité du coût CPU/RAM en production fait souvent pencher la balance en faveur de JSON.
JSON réduit la surface d’attaque en désérialisation: pas de tags exécutables, pas d’objets arbitraires, des primitives prévisibles.
Beaucoup d’incidents de sécurité historiques ont été liés à des loaders YAML « trop puissants » qui instancient des types ou exécutent des constructions inattendues. À l’inverse, JSON ne transporte que des structures de données simples, ce qui limite les vecteurs d’exécution ou d’injection. Les parseurs JSON des bibliothèques standard sont conçus pour traiter des données, pas du comportement. En pratique, cela signifie moins de pièges en revue de sécurité et un durcissement plus simple par défaut.
JSON bénéficie d’un écosystème universel (navigateurs, CLIs, schémas, codegen) et reste compatible avec YAML 1.2.
JSON est supporté nativement par tous les navigateurs modernes (JSON.parse/stringify) et par les bibliothèques standard de la plupart des langages. L’écosystème de validation et de contrat est mature: JSON Schema, OpenAPI/AsyncAPI, générateurs de clients/serveurs, linters et formateurs (jq, Prettier) s’intègrent sans friction. Les diffs Git sont lisibles et stables, facilitant la revue et la résolution de conflits. Et bonus: tout document JSON valide est également un document YAML 1.2 valide, ce qui garantit l’interopérabilité si vous devez cohabiter avec YAML.