820 votes

Quelle est la différence entre YAML et JSON ?

Quelles sont les différences entre YAML et JSON, en tenant compte notamment des éléments suivants ?

  • Performance (temps de codage/décodage)
  • Consommation de mémoire
  • Clarté de l'expression
  • Disponibilité des bibliothèques, facilité d'utilisation (je préfère le C)

Je prévoyais d'utiliser l'un de ces deux dans notre système embarqué pour stocker les fichiers de configuration.

En rapport :

Dois-je utiliser YAML ou JSON pour stocker mes données Perl ?

35 votes

Sachez que JSON peut être considéré comme un sous-ensemble de YAML : fr.wikipedia.org/wiki/JSON#YAML

2 votes

@Charles, oui, mais ils ont une différence subtile : ajaxian.com/archives/json-yaml-it-s'approcher-de-la-vérité

2 votes

Puisque YAML est (approximativement) un sur-ensemble de JSON, il est impossible de répondre à la question des performances sans savoir si vous utiliserez cette expressivité. Si vous n'en avez pas besoin : à quelle vitesse les analyseurs YAML lisent-ils JSON ? Si vous en avez besoin : dans quelle mesure les analyseurs JSON sont-ils plus lents lorsque vous autorisez une représentation JSON éventuellement plus longue de la même idée ?

5voto

Mvr39 Points 51

Puisque cette question revient souvent dans les recherches sur YAML et JSON, il convient de souligner une différence rarement citée entre les deux : la licence. JSON prétend avoir une licence que les utilisateurs de JSON doivent respecter (y compris l'ambiguïté juridique "doit être utilisé pour le bien et non pour le mal"). YAML ne porte pas une telle revendication de licence, et cela pourrait être une différence importante (pour votre avocat, sinon pour vous).

0 votes

Je n'utilise pas JSON, j'utilise l'équivalent exact de JSON sans l'appeler JSON. Je l'appelle PS-OFF. Vous allez me poursuivre en justice pour avoir utilisé { "": #, [] } ? ??

0 votes

@Andrew oui je le ferai :p

1 votes

@AryanBeezadhur Attention, les émoticônes peuvent être sous copyright.

5voto

Michael Dorner Points 730

Parfois, il n'est pas nécessaire de se décider pour l'un ou l'autre.

En Go, par exemple, vous pouvez avoir les deux en même temps :

type Person struct {
    Name string `json:"name" yaml:"name"`
    Age int `json:"age" yaml:"age"`
}

2voto

Triforcey Points 424

Je trouve que YAML et JSON sont tous deux très efficaces. Les deux seules choses qui dictent vraiment l'utilisation de l'un plutôt que de l'autre pour moi sont les suivantes : le langage le plus couramment utilisé. Par exemple, si j'utilise Java, Javascript, j'utiliserai JSON. Pour Java, j'utiliserai ses propres objets, qui ressemblent beaucoup à JSON mais manquent de certaines fonctionnalités, et je les convertirai en JSON si nécessaire ou je les créerai en JSON dès le départ. Je le fais parce que c'est une pratique courante en Java et que cela permet aux autres développeurs Java de modifier plus facilement mon code. La deuxième chose est que je l'utilise pour que le programme se souvienne des attributs, ou si le programme reçoit des instructions sous la forme d'un fichier de configuration, dans ce cas j'utiliserai YAML, parce qu'il est très facilement lisible par l'homme, a une belle syntaxe, et est très facile à modifier, même si vous n'avez aucune idée de comment YAML fonctionne. Ensuite, le programme le lira et le convertira en JSON, ou ce qui est préféré pour ce langage.

En fin de compte, cela n'a honnêtement aucune importance. JSON et YAML sont tous deux facilement lisibles par tout programmeur expérimenté.

1voto

MERN Points 2822

Les développeurs Javascript aiment JSON, et les développeurs Python préfèrent YMAL.

1 votes

Comme le format JSON

0 votes

Comme le format YAML

0voto

rossi Points 11

Si vous souhaitez une meilleure vitesse d'analyse, vous pouvez stocker les données en JSON. J'ai dû analyser les données à partir d'un emplacement où le fichier était susceptible d'être modifié par d'autres utilisateurs et j'ai donc utilisé YAML car il offre une meilleure lisibilité que JSON. Et vous pouvez également ajouter des commentaires dans le fichier YAML, ce qui n'est pas possible dans un fichier JSON.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X