De : Livre d'Arnaud Lauret "The Design of Web APIs". :
Le format de données JSON
JSON est un format de données textuelles basé sur la façon dont le langage de programmation JavaScript décrit les données, mais, malgré son nom, il est totalement indépendant du langage (cf. https://www.json.org/ ). Utilisation de JSON vous pouvez décrire des objets contenant des paires nom/valeur non ordonnées ainsi que des tableaux ou des listes contenant des valeurs ordonnées, comme le montre cette figure.
Un objet est délimité par des accolades ({}). Un nom est une chaîne de caractères entre guillemets ("nom") et est séparé de sa valeur par deux points ( :). Une valeur peut être une chaîne de caractères comme "value", un nombre comme 1,23, un booléen (vrai ou faux), la valeur nulle null, un objet ou un tableau. Un tableau est délimité par des parenthèses ([]), et ses valeurs sont séparées par des virgules (,). Le site JSON est facilement analysé à l'aide de n'importe quel langage de programmation. Il est également relativement facile à lire et à écrire. Il est largement adopté pour de nombreuses utilisations telles que les bases de données, les fichiers de configuration et, bien sûr, les API.
YAML
YAML (YAML Ain't Markup Language) est un format de sérialisation de données convivial. Comme JSON, YAML ( http://yaml.org ) est un format de données clé/valeur. La figure montre une comparaison entre les deux.
Notez les points suivants :
-
Il n'y a pas de guillemets doubles (" ") autour des noms et des valeurs des propriétés dans les fichiers YAML .
-
JSON les accolades ({}) et les virgules (,) structurelles sont remplacées par des retours à la ligne et des l'indentation dans YAML .
-
Les parenthèses ([]) et les virgules (,) sont remplacées par des tirets (-) et des retours à la ligne dans le texte suivant YAML .
-
Contrairement à JSON , YAML autorise les commentaires commençant par un dièse (#). Il est relativement facile de convertir l'un de ces formats en l'autre. Attention toutefois, vous perdrez des commentaires lors de la conversion d'un fichier de type YAML pour JSON .
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 ?
0 votes
@jokoon Je suppose que "je préférerais une bibliothèque C" (par exemple libyaml).
0 votes
Je ne le préconise pas, mais j'ai vu certains formats de données Lua qui sont très très simples.
7 votes
Documents YAML puede être complexe et difficile à lire. Une attaque "Billion laughs" est possible avec YAML. D'un autre côté, les objets complexes, les graphes et autres structures peuvent être sérialisés efficacement en YAML. Pour les formats d'échange et les structures simples, JSON est préférable. Pour la sérialisation d'objets complexes, ou pour les définitions de grammaire, YAML peut être préféré.
0 votes
La plus grande différence est que YAML doit être formaté à l'aide d'une règle.