Quelle est la différence entre YAML et JSON?

736

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

  • Performances (temps d'encodage / décodage)
  • Consommation de mémoire
  • Clarté de l'expression
  • Disponibilité de la bibliothèque, facilité d'utilisation (je préfère C)

J'avais l'intention d'utiliser l'un de ces deux dans notre système embarqué pour stocker les fichiers de configuration.

En relation:

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

pierrotlefou
la source
26
Sachez que JSON peut être considéré comme un sous-ensemble de YAML: en.wikipedia.org/wiki/JSON#YAML
Charles
2
@Charles, oui, mais ils ont une différence subtile: ajaxian.com/archives/json-yaml-its-getting-closer-to-truth
pierrotlefou
1
Étant donné que YAML est (approximativement) un surensemble de JSON, la question de la performance ne peut être résolue sans supposer si vous utiliserez cette expressivité. Si vous n'en avez pas besoin: à quelle vitesse les parseurs 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?
poolie
@jokoon Je suppose que "je préfère une bibliothèque C" (par exemple libyaml)
dbr
4
Les documents YAML peuvent être complexes et difficiles à lire. Une attaque "Billion rire" est possible avec YAML. D'un autre côté, des objets complexes, des graphiques et d'autres structures peuvent être sérialisés efficacement en YAML. Pour les formats d'échange et les structures simples, JSON est préféré. Pour la sérialisation d'objets complexes ou pour les définitions de grammaire, YAML peut être préféré.
Erik Aronesty

Réponses:

657

Techniquement, YAML est un sur-ensemble de JSON. Cela signifie que, en théorie du moins, un analyseur YAML peut comprendre JSON, mais pas nécessairement l'inverse.

Voir les spécifications officielles, dans la section intitulée "YAML: Relation to JSON" .

En général, il y a certaines choses que j'aime à propos de YAML qui ne sont pas disponibles dans JSON.

  • Comme l'a souligné @jdupont , YAML est visuellement plus facile à regarder. En fait, la page d'accueil YAML est elle-même YAML valide, mais elle est facile à lire pour un humain.
  • YAML a la possibilité de référencer d'autres éléments dans un fichier YAML en utilisant des «ancres». Ainsi, il peut gérer des informations relationnelles comme on pourrait le trouver dans une base de données MySQL.
  • YAML est plus robuste quant à l'intégration d'autres formats de sérialisation tels que JSON ou XML dans un fichier YAML.

Dans la pratique, aucun de ces deux derniers points n'aura probablement d'importance pour les choses que vous ou moi faisons, mais à long terme, je pense que YAML sera un format de sérialisation des données plus robuste et viable.

À l'heure actuelle, AJAX et d'autres technologies Web ont tendance à utiliser JSON. YAML est actuellement davantage utilisé pour les processus de données hors ligne. Par exemple, il est inclus par défaut dans le package de vision par ordinateur OpenCV basé sur C, contrairement à JSON.

Vous trouverez des bibliothèques C pour JSON et YAML. Les bibliothèques de YAML ont tendance à être plus récentes, mais je n'ai eu aucun problème avec elles par le passé. Voir par exemple Yaml-cpp .

AndyL
la source
199
json n'est pas un sous-ensemble (bien qu'il soit proche), et les incompatibilités sont exaspérantes lorsque vous les rencontrez. Les bibliothèques json sont généralement plus rapides ... ( stackoverflow.com/questions/2451732/… ). les partisans de Yaml insisteront sur le fait qu'il s'agit d'un sous-ensemble. si la lisibilité est un problème, utilisez yaml. si l'interopérabilité et la vitesse sont un problème, utilisez JSON.
Erik Aronesty
6
YAML est un sur-ensemble d'une forme particulière de syntaxe JSON. Autrement dit, si vous utilisez JSON d'une manière compatible avec YAML, il s'agit d'un sous-ensemble approprié. Comme l'a commenté pierr ci-dessus, les spécifications visent [à assurer la compatibilité] (ajaxian.com/archives/json-yaml-its-getting-closer-to-truth).
naught101
120
YAML prend également en charge les commentaires, ce qui est pratique.
Den
59
@ErikAronesty JSON était proche d'un sous-ensemble de YAML 1.1, mais depuis YAML 1.2, il s'agit désormais d'un véritable sous-ensemble. YAML 1.2 a été principalement publié pour aplanir les dernières incompatibilités entre les deux spécifications.
00prometheus
64
Extrait de la spécification YAML 1.2 : "L'objectif principal de cette révision est de mettre YAML en conformité avec JSON en tant que sous-ensemble officiel."
Rich C
205

Différences:

  1. YAML, selon la façon dont vous l'utilisez, peut être plus lisible que JSON
  2. JSON est souvent plus rapide et est probablement toujours interopérable avec plus de systèmes
  3. Il est possible d'écrire un analyseur JSON "assez bien" très rapidement
  4. Les clés en double, qui sont potentiellement des JSON valides, sont définitivement des YAML invalides.
  5. YAML a une tonne de fonctionnalités, y compris des commentaires et des ancres relationnelles. La syntaxe YAML est donc assez complexe et peut être difficile à comprendre.
  6. Il est possible d'écrire des structures récursives dans yaml:, {a: &b [*b]}qui bouclera à l'infini dans certains convertisseurs. Même avec une détection circulaire, une "bombe yaml" est toujours possible (voir bombe xml ).
  7. Comme il n'y a pas de références, il est impossible de sérialiser des structures complexes avec des références d'objet en JSON. La sérialisation YAML peut donc être plus efficace.
  8. Dans certains environnements de codage, l'utilisation de YAML peut permettre à un attaquant d' exécuter du code arbitraire .

Observations:

  1. Les programmeurs Python sont généralement de grands fans de YAML, en raison de l'utilisation de l'indentation, plutôt que de la syntaxe entre crochets, pour indiquer les niveaux.
  2. De nombreux programmeurs considèrent l'attachement du «sens» à l'indentation comme un mauvais choix.
  3. Si le format de données quitte l'environnement d'une application, est analysé dans une interface utilisateur ou est envoyé dans une couche de messagerie, JSON peut être un meilleur choix.
  4. YAML peut être utilisé, directement, pour des tâches complexes comme les définitions de grammaire, et est souvent un meilleur choix que d'inventer un nouveau langage.
Erik Aronesty
la source
9
C'est. L'objectif de Yaml 1.2 était de résoudre les quelques différences de compatibilité pour faire de JSON un sous-ensemble strict. Si vous pensez que la spécification n'a pas atteint son objectif, Erik, veuillez indiquer un exemple quelque part de JSON valide qui viole la spécification YAML et / ou casse un analyseur YAML conforme 1.2 vérifié.
SFEley
32
@SFEley La spécification YAML indique qu'il existe des fichiers JSON potentiellement valides qui seraient des YAML non valides. Mais ce n'est probablement pas en utilisation réelle. "La RFC4627 de JSON exige que les clés de mappage soient" DOIVENT "être uniques, tandis que YAML insiste sur le fait qu'elles" DOIVENT "être. Techniquement, YAML se conforme donc à la spécification JSON, choisissant de traiter les doublons comme une erreur. la sémantique de ces doublons, les seuls fichiers JSON portables sont ceux avec des clés uniques, qui sont donc des fichiers YAML valides. " - yaml.org/spec/1.2/spec.html#id2759572
David C. Bishop
9
Pour commenter l'utilisation du retrait; eh bien, je crois que cela pourrait nécessiter de s'y habituer et tout le monde ne le voudrait pas. Par exemple, je suis un gars .NET. Je regardais un fichier travis.yml et je me demandais pourquoi il y avait un problème. J'ai découvert que j'avais un onglet où il ne devait pas être. Tout le monde n'est pas habitué aux choses qui explosent en raison des préférences d'espace / tabulation / nouvelles lignes.
Phil
10
Les tabulations ne sont tout simplement pas autorisées du tout en tant que caractères de retrait. À mon humble avis, c'est un bon style de codage dans toutes les langues - avec ou sans indentation syntaxique.
00prometheus
6
@Wyrmwood J'aime personnellement python et YAML et je les utilise littéralement tous les jours. J'ai tendance à utiliser YAML pour les choses que les gens doivent souvent éditer et JSON pour les choses que les gens "pourraient" avoir besoin de regarder. J'ai été soumis à des critiques valables de la part des développeurs C ++ qui trouvent que l'indentation prête à confusion ... surtout s'il y a plusieurs niveaux ou des blocs fonctionnels plus longs. Bien sûr ... un bon code testable n'a pas ces choses, donc ce n'est généralement pas un problème. Ceci est mon observation personnelle, mais toute recherche Google occasionnelle donnera de nombreux résultats ... il est donc trivial de vérifier.
Erik Aronesty
89

Contourner la théorie ésotérique

Cela répond au titre, pas aux détails car la plupart lisent simplement le titre à partir d'un résultat de recherche sur google comme moi, donc j'ai pensé qu'il était nécessaire d'expliquer du point de vue du développeur Web .

  1. YAML utilise l'indentation d'espace, qui est un territoire familier pour les développeurs Python.
  2. Les développeurs JavaScript adorent JSON car il s'agit d'un sous-ensemble de JavaScript et peut être directement interprété et écrit à l'intérieur de JavaScript, tout en utilisant une manière abrégée de déclarer JSON, ne nécessitant pas de guillemets doubles dans les clés lors de l'utilisation de noms de variables typiques sans espaces.
  3. Il existe une pléthore d'analyseurs qui fonctionnent très bien dans toutes les langues pour YAML et JSON.
  4. Le format d'espace de YAML peut être beaucoup plus facile à regarder dans de nombreux cas car le formatage nécessite une approche plus lisible par l'homme.
  5. Le formulaire de YAML tout en étant plus compact et plus facile à regarder peut être trompeusement difficile à modifier manuellement si vous n'avez pas de formatage d'espace visible dans votre éditeur. Les tabulations ne sont pas des espaces, ce qui crée une confusion supplémentaire si vous ne disposez pas d'un éditeur pour interpréter vos frappes en espaces.
  6. JSON est beaucoup plus rapide à sérialiser et à désérialiser en raison de beaucoup moins de fonctionnalités que YAML à rechercher, ce qui permet à un code plus petit et plus léger de traiter JSON.
  7. Une idée fausse commune est que YAML a besoin de moins de ponctuation et est plus compact que JSON mais c'est complètement faux. L'espace est invisible, il semble donc qu'il y ait moins de caractères, mais si vous comptez l'espace réel qui est nécessaire pour que YAML soit interprété correctement avec une indentation appropriée, vous constaterez que YAML nécessite en fait plus de caractères que JSON. JSON n'utilise pas d'espaces pour représenter la hiérarchie ou le regroupement et peut être facilement aplati avec des espaces inutiles supprimés pour un transport plus compact.

L'éléphant dans la pièce: Internet lui-même

JavaScript domine si clairement le Web par une énorme marge et les développeurs JavaScript préfèrent utiliser JSON comme format de données de manière écrasante avec les API Web populaires, il devient donc difficile d'argumenter en utilisant YAML plutôt que JSON lors de la programmation Web au sens général, car vous serez probablement dépassé dans un environnement d'équipe. En fait, la majorité des programmeurs Web ne savent même pas que YAML existe, encore moins d'envisager de l'utiliser.

Si vous faites de la programmation Web, JSON est la méthode par défaut car aucune étape de traduction n'est nécessaire lorsque vous travaillez avec JavaScript, vous devez donc trouver un meilleur argument pour utiliser YAML sur JSON dans ce cas.

Jason Sebring
la source
10
Je ne suis pas d'accord pour dire que les développeurs de python préfèrent YAML. Dict Pythons est essentiellement JSON, la liste des dicts est également essentiellement JSON. Python a construit dans json lib. D'un côté, je suis un développeur python et je préfère JSON (la plupart des développeurs python que je connais préfèrent JSON).
karantan
6
La seule chose qui me dérange vraiment à propos des espaces blancs, c'est à quel point il est facile d'être confus et de se tromper car indenter ou non pourrait signifier qu'il est imbriqué ou au même niveau et également très facile à l'erreur si vous ne le faites pas avoir une règle de guidage. c'est comme les oops cachés ce n'est vraiment pas un scénario de type facile que personne ne dit lors de l'édition de yaml. jamais eu ce problème avec json.
Jason Sebring
6
@JasonSebring. Vous vous demanderiez presque pourquoi YAML a choisi des espaces. Mon premier «plongeon dans l'océan» de YAML a conduit à une application cassée ... à cause des espaces. Vous auriez pensé que peut-être utiliser une indentation sans utiliser de caractères non imprimables aurait été beaucoup plus logique! (Autrement dit, pourquoi diable n'ont-ils pas choisi '.' Plutôt que ''?) Pour comprendre YAML, vous devez vous rendre aux spécifications. Pour comprendre JSON n'a pas besoin de cela. (Je suis allé dans le premier et jamais dans le second). Pour moi, cela indique un format qui n'est pas vraiment «lisible par l'homme»
cmroanirgo
7
@cmroanirgo yah c'était mon expérience. Mon patron nous a forcés à utiliser YAML sur JSON et cela a rendu les choses inutilement nulles à modifier et à ingérer. J'ai écrit ceci à cause de l'espoir que des votes me justifieraient.
Jason Sebring
3
Un problème avec les onglets dans YAML signifie (a) ne pas lire le message d'erreur et (b) avoir un éditeur qui ne met pas en surbrillance les onglets. Les deux problèmes sont facilement rectifiables, donc je ne comprends pas les plaintes.
toolforger
38

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.

Steve Bennett
la source
3
En fait, je pensais que YAML était plus petit à cause des personnages invisibles qui m'ont trompé en tant que tel. Invisible => Pas là, enfin pas du tout. Si vous comptez que les caractères invisibles doivent être là, d'autant plus que YAML devient plus imbriqué, il dépasse rapidement JSON. Je pensais juste que c'était très intéressant car la partie lisible par l'homme trompe la plupart d'entre nous dans cette notion jusqu'à ce que j'y réfléchisse vraiment car vous pouvez aplatir JSON et YAML, pas tellement. J'ai également trouvé que YAML était très difficile à modifier à la main, pas à lire, juste à modifier car vous avez besoin des guides de l'éditeur activés, confondant parfois les éléments imbriqués.
Jason Sebring du
1
Je pense qu'aucune des réponses ici ne le dit explicitement: "Pour les fichiers de configuration / configuration, YAML est meilleur (pour les raisons mentionnées ci-dessus par tout le monde). Pour l'interopérabilité machine / machine, utilisez JSON". En d'autres termes: si votre public cible est un humain, YAML est meilleur. Si la cible est un autre programme (mais que vous souhaitez toujours que les données soient lisibles par l'homme), utilisez JSON.
Florin T.30
C'est vrai, mais la question énonçait des paramètres assez spécifiques sur la façon dont ils voulaient que les deux soient comparés. Personnellement, je n'utiliserais jamais YAML pour rien. J'utiliserais soit JSON pour l'interopérabilité, soit JSON6 si la maintenance humaine est importante.
Steve Bennett
29

GIT et YAML

Les autres réponses sont bonnes. Lisez-les d'abord. Mais j'ajouterai une autre raison d'utiliser parfois YAML: git .

De plus en plus, de nombreux projets de programmation utilisent des référentiels git pour la distribution et l'archivage. Et, alors que l'historique d'un dépôt git peut également stocker des fichiers JSON et YAML, la méthode "diff" utilisée pour suivre et afficher les modifications apportées à un fichier est orientée ligne. Étant donné que YAML est forcé d'être orienté ligne, tout petit changement dans un fichier YAML est plus facile à voir par un humain.

Il est vrai, bien sûr, que les fichiers JSON peuvent être «rendus jolis» en triant les chaînes / clés et en ajoutant une indentation. Mais ce n'est pas la valeur par défaut et je suis paresseux.

Personnellement, j'utilise généralement JSON pour l'interaction de système à système. J'utilise souvent YAML pour les fichiers de configuration, les fichiers statiques et les fichiers suivis. (J'évite également généralement d'ajouter des ancres relationnelles YAML. La vie est trop courte pour rechercher des boucles.)

De plus, si la vitesse et l'espace sont vraiment un problème, je n'utilise pas non plus. Vous voudrez peut-être regarder BSON.

JohnAD
la source
22

Je trouve que YAML est plus agréable pour les yeux: moins de parenthèses, "" etc.

En termes de performances / ressources, je ne m'attendrais pas à de grandes différences entre les deux.

De plus, nous parlons de fichiers de configuration et donc je ne m'attendrais pas à une fréquence élevée d'activité d'encodage / décodage, non?

jldupont
la source
22
Je me demandais ce que vous vouliez dire par l'ennui des onglets . Je crois que la chose est que les caractères de tabulation ne sont pas autorisés dans yaml , ce qui personnellement, je pense, est une bonne idée dans n'importe quel fichier source .
poolie
6
@poolie: jldupont fait probablement référence au premier espace syntaxiquement significatif dans YAML.
naught101
10
OK mais ce ne sont pas des onglets.
poolie
20

Si vous n'avez besoin d'aucune des fonctionnalités de YAML et pas de JSON, je préférerais JSON car il est très simple et est largement pris en charge (a beaucoup de bibliothèques dans de nombreuses langues). YAML est plus complexe et a moins de support. Je ne pense pas que la vitesse d'analyse ou l'utilisation de la mémoire seront très différentes, et peut-être pas une grande partie des performances de votre programme.


la source
3
de quelle manière YAML est-il plus complexe?
Accatyyc
18
Par exemple, YAML prend en charge les ancres, comme cela a été noté dans une autre réponse. Il existe d'autres fonctionnalités, telles que les types de données extensibles. Cela rend l'analyse plus complexe et explique pourquoi YAML a des spécifications plus importantes. Cela peut nuire aux performances en fonction de la mise en œuvre de l'analyseur (jetez un œil à cette question: stackoverflow.com/questions/2451732/… ).
Anton Strogonoff
5
La complexité est meilleure que la simplicité si cette complexité vous achète de l'énergie pour atteindre une plus grande simplicité globale. Cela est certainement vrai selon la complexité de votre modèle de données.
Jonathan Neufeld
3
Je suis peut-être un peu en retard ici, mais YAML peut ajouter des commentaires, contrairement à JSON. Pour moi, c'est une grande aide en ce qui concerne la documentation des spécifications
Moses Liao GZ
@Accatyyc. Je pense que le fait que les gens posent des questions sur la différence est un signe certain que YAML n'est pas si simple. Je n'ai jamais posé de question sur JSON (sauf "pourquoi ne puis-je pas y ajouter de commentaires?")
cmroanirgo
15

Techniquement, YAML offre beaucoup plus que JSON (YAML v1.2 est un surensemble de JSON):

  • commentaires
  • ancres et héritage - exemple de 3 éléments identiques:

    item1: &anchor_name
      name: Test
      title: Test title
    item2: *anchor_name
    item3:
      <<: *anchor_name
      # You may add extra stuff.
  • ...

La plupart du temps, les gens n'utilisent pas ces fonctionnalités supplémentaires et la principale différence est que YAML utilise l'indentation tandis que JSON utilise des crochets . Cela rend YAML plus concis et lisible (pour l'œil entraîné).

Lequel choisir?

  • YAML fonctionnalités supplémentaires et la notation concise en font un bon choix pour les fichiers de configuration ( non fournis par l'utilisateur).
  • Les fonctionnalités limitées de JSON , la large prise en charge et l'analyse plus rapide en font un excellent choix pour l'interopérabilité et les données fournies par l'utilisateur .
Wernight
la source
4

Étant donné que cette question figure désormais en bonne place lors de la recherche de YAML et JSON, il convient de noter une différence rarement citée entre les deux: la licence. JSON prétend avoir une licence à laquelle les utilisateurs de JSON doivent adhérer (y compris le légalement ambigu "doit être utilisé pour le Bien, pas pour le Mal"). YAML ne porte aucune réclamation de licence de ce type, et cela pourrait être une différence importante (pour votre avocat, sinon pour vous).

Mvr39
la source
Je n'utilise pas JSON, j'utilise l'équivalent exact de JSON sans l'appeler JSON. Je l'appelle PS-OFF. Tu vas me poursuivre pour avoir utilisé { "": #, [] }???
Andrew
4

Parfois, vous n'avez pas à choisir l'un plutôt que l'autre.

Dans 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"`
}
Michael Dorner
la source
3

De: Arnaud Lauret Livre «La conception des API Web». :

Le format de données JSON

JSON est un format de données texte basé sur la façon dont le langage de programmation JavaScript décrit les données mais est, malgré son nom, complètement indépendant du langage (voir https://www.json.org/ ). À l'aide 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 illustré dans cette figure.

entrez la description de l'image ici

Un objet est délimité par des accolades ({}). Un nom est une chaîne entre guillemets ("nom") et est séparé de sa valeur par deux points (:). Une valeur peut être une chaîne comme "valeur", 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 crochets ([]) et ses valeurs sont séparées par des virgules (,). Le format JSON est facilement analysé en utilisant 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 des deux.

entrez la description de l'image ici

Notez les points suivants:

  • Il n'y a pas de guillemets doubles ("") autour des noms de propriété et des valeurs dans YAML .

  • Les accolades structurelles ({}) et les virgules (,) de JSON sont remplacées par des sauts de ligne et un retrait en YAML .

  • Les crochets de tableau ([]) et les virgules (,) sont remplacés par des tirets (-) et des retours à la ligne dans YAML .

  • Contrairement à JSON , YAML autorise les commentaires commençant par une marque de hachage (#). Il est relativement facile de convertir l'un de ces formats dans l'autre. Soyez averti cependant, vous perdrez des commentaires lors de la conversion d'un document YAML en JSON .

HS Progr
la source
0

Je trouve que YAML et JSON sont très efficaces. Les deux seules choses qui dictent vraiment quand l'une est utilisée par rapport à l'autre pour moi est une, avec quoi la langue est la plus utilisée. Par exemple, si j'utilise Java, Javascript, j'utiliserai JSON. Pour Java, j'utiliserai leurs propres objets, qui sont à peu près JSON mais manquant de certaines fonctionnalités, et le convertirai en JSON si j'en ai besoin ou le ferai en JSON en premier lieu. Je le fais parce que c'est une chose courante en Java et qu'il est plus facile pour les autres développeurs Java de modifier mon code. La deuxième chose est de savoir si 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, car il est très facilement lisible par l'homme, a une bonne recherche syntaxe, et est très facile à modifier, même si vous ne savez pas comment fonctionne YAML. Ensuite, le programme le lira et le convertira en JSON, ou tout ce qui est préféré pour cette langue.

En fin de compte, cela n'a vraiment pas d'importance. JSON et YAML sont facilement lisibles par tout programmeur expérimenté.

Triforcey
la source
-1
  • JSON ne peut pas gérer de grandes données en comparant le yml

  • Ne convient pas pour gérer différents formats multimédias.

  • JSON n'a pas de fonctionnalité pour prendre en charge les «commentaires». Cela pourrait être inclus uniquement comme attribut supplémentaire.

  • YAML présente certains avantages par rapport à JSON, comme l'auto-référence, la prise en charge de types de données complexes, les littéraux de blocs intégrés, les commentaires et plus encore.

  • JSON est uniquement lisible alors que YAML peut être lisible et modifiable.
  • JSON est un sous-ensemble de YAML afin que les analyseurs YAML puissent analyser JSON.
  • YAML n'utilise aucun délimiteur supplémentaire, il est donc plus léger que XML et JSON.
Premraj
la source
Que voulez-vous dire sur les points "grandes données" et "uniquement lisibles"? JSON est un format de données, qu'est-ce qu'un concept abstrait peut avoir ces deux limitations?
João Farias
4
@ JoãoFarias Disons que vous avez 1 Go de fichier JSON et 1 Go de fichier CSV et que vous avez 256 Mo de mémoire. Vous pouvez traiter le fichier CSV ligne par ligne, avec JSON ce n'est pas facilement possible. Il est probablement plus facile d'analyser le fichier YAML ligne par ligne que l'analyse JSON ne le serait jamais.
NeverEndingQueue