Cette question a 6 ans, mais étrangement, aucune des réponses ne répond vraiment aux quatre points (vitesse, mémoire, expressivité, portabilité).
La vitesse
Évidemment, cela dépend de l'implémentation, mais parce que JSON est si largement utilisé et si facile à implémenter, il a eu tendance à recevoir un plus grand support natif, et donc une vitesse. Étant donné que YAML fait tout ce que fait JSON, plus un chargement supplémentaire, il est probable que de toutes les implémentations comparables des deux, celle de JSON sera plus rapide.
Cependant, étant donné qu'un fichier YAML peut être légèrement plus petit que son homologue JSON (en raison de moins de caractères "
et ,
), il est possible qu'un analyseur YAML hautement optimisé soit plus rapide dans des circonstances exceptionnelles.
Mémoire
Fondamentalement, le même argument s'applique. Il est difficile de voir pourquoi un analyseur YAML serait jamais plus efficace en mémoire qu'un analyseur JSON, s'ils représentent la même structure de données.
Expressivité
Comme noté par d'autres, les programmeurs Python ont tendance à préférer YAML, les programmeurs JavaScript à JSON. Je ferai ces observations:
- Il est facile de mémoriser l'intégralité de la syntaxe de JSON, et donc d'être très sûr de comprendre la signification de tout fichier JSON. YAML n'est vraiment compréhensible par aucun être humain. Le nombre de subtilités et de cas marginaux est extrême.
- Parce que peu d'analyseurs implémentent la spécification entière, il est encore plus difficile d'être certain de la signification d'une expression donnée dans un contexte donné.
- L'absence de commentaires dans JSON est, dans la pratique, une vraie douleur.
Portabilité
Il est difficile d'imaginer un langage moderne sans bibliothèque JSON. Il est également difficile d'imaginer un analyseur JSON implémentant quelque chose de moins que la spécification complète. YAML est largement pris en charge, mais est moins omniprésent que JSON, et chaque analyseur implémente un sous-ensemble différent. Par conséquent, les fichiers YAML sont moins interopérables que vous ne le pensez.
Sommaire
JSON est le gagnant pour les performances (le cas échéant) et l'interopérabilité. YAML est meilleur pour les fichiers gérés par l'homme. HJSON est un compromis décent bien qu'avec une portabilité très réduite. JSON5 est un compromis plus raisonnable, avec une syntaxe bien définie.