Page 1 sur 1

JSON versus YAML

Posté : 25 janv. 2009, 14:29
par Hywan
Hey :),

Je me posais une question sur JSON et YAML. Je pense que tout le monde connaît les deux. Je trouvais qu'ils se ressemblaient beaucoup beaucoup. Même si YAML est plus user-friendly ou human-readable comme y disent, JSON n'est pas pire. Je veux dire, les différences sont négligeables.

Un autre argument : JSON est compris nativement par PHP (http://php.net/json), alors que YAML non. Il existe des parseurs, plus ou moins efficaces, mais ça reste du boulot quand même.

Uniformité des documents : JSON est compris par PHP mais surtout par … Javascript. Pour une application Web, ça me paraît un bel avantage.

Et XML dans tout ça ? J'aime beaucoup XML, mais c'est vrai que c'est plus verbeux à cause du balisage. Même si ça se compresse bien, on préfère un document lisible plus rapidement (c'est très subjectif comme propos).

En fait, je me demande si je ne vais pas bazarder toutes mes configurations YAML en JSON … Bref, vous avez d'autres arguments ?

Je ne suis pas pour la multiplication des langages, surtout quand ils sont redondants. Des langages de structurations de données, il en existe un paquet. Mais entre JSON et YAML, je trouve qu'ils sont très redondants …

Posté : 25 janv. 2009, 15:38
par zeus
Pour moi, JSON et YAML n'ont pas la même cible.

JSON est un langage de transport de données, une sorte de sérialisation lisible. Il est donc tout à fait à sa place dans un retour AJAX, dans le cas où on ne veut pas utiliser XML.
Alors que YAML est un langage qui est facilement lisible et ecrivable (?) par un humain, donc tout à fait approprié pour des fichiers de configurations.

Au final, je pense donc qu'ils ne sont pas concurrents, mais complémentaires.

Posté : 25 janv. 2009, 16:28
par Berzemus
Pour moi, JSON et YAML n'ont pas la même cible.

JSON est un langage de transport de données, une sorte de sérialisation lisible. Il est donc tout à fait à sa place dans un retour AJAX, dans le cas où on ne veut pas utiliser XML.
Alors que YAML est un langage qui est facilement lisible et ecrivable (?) par un humain, donc tout à fait approprié pour des fichiers de configurations.

Au final, je pense donc qu'ils ne sont pas concurrents, mais complémentaires.
+.5

Tout à fait d'accord henri.

Posté : 25 janv. 2009, 18:06
par Calimero
J'applaudis des deux mains l'idée et la conclusion pour une raison simple :

Très peu d'éditeurs de texte ont un moteur de coloration syntaxique qui gère correctement le yaml. Et même quand ils en ont un, le yaml impose un système strict d'indentation qui n'est pas non plus géré par les éditeurs en question.

Tout ceci rend un fichier yaml très difficile à valider autrement qu'en le parsant pour de bon.

Le JSON n'a pas ces défauts...

Posté : 25 janv. 2009, 18:27
par naholyr
Je ne vois pas pourquoi tu vois deux langages différents : YAML n'est finalement qu'une surcouche à JSON. Toute donnée exprimée en JSON (bémol : sans retour à la ligne entre les données) et lue par un parseur YAML donnera la même chose, simplement la syntaxe YAML est étendue avec quelques notions esthétiques.
Allez voir les spécifications complète du YAML, il ne se réduit pas à ce qu'on en connait. Il y a notamment (je parle de mémoire sans revérifier, j'avoue) un système de références et une gestion spécifique du multi-ligne. Le JSON c'est très "brut de décoffrage" et il est intéressant de disposer d'une déclinaison qui soit plus axée vers les fichiers de configuration (données durables et amenées à être lues et éditées par plusieurs personnes), c'est ce que réussit très bien YAML grâce à ses ajouts.

Quant aux problèmes d'indentation et de coloration syntaxique, ils sont tous deux faux :
- La seule restriction c'est que l'indentation ne doit être fait que par espaces. Or tous les éditeurs permettent de switcher entre une indentation par tabulation ou par espaces (sauf peut-être notepad...). Et un éditeur "sérieux" devrait permettre de choisir son type d'indentation selon le type de fichier (Eclipse par exemple).
- Il existe des éditeurs YAML avec coloration syntaxique (n'importe quel IDE Ruby déjà), dont un dans Eclipse, intégré dans le module "Symfoclipse" qui a l'avantage de présenter les tabulations en début de ligne avec un gros fond rouge, immanquable ;)

Je reconnais un seul défaut au YAML, c'est que je ne comprends pas pourquoi il n'accepte pas une indentation par tabulation, là où Python (ou VB aussi, mais là vous allez me crier dessus ^^) qui a choisi le même mode de structuration, lui l'accepte.

Posté : 25 janv. 2009, 18:33
par Hywan
Oui Naholyr, YAML permet bien un système de références et de pointeurs avec la même notation qu'en C. Je le sais, j'ai lu toute la spécification de YAML 1.1 pour l'écriture de Hoa_Yaml (super soirée :P). Il propose effectivement plus de choses que JSON mais je demandais à avoir votre avis.

Et sinon +1 pour l'indentation et la colorisation. Même Vi colorise YAML, alors si un outil aussi primitif que ça le fait, les super éditeurs top perfectionnés doivent bien y arriver ;-).

Posté : 27 janv. 2009, 01:45
par Hywan
Je n'ai pas vu mais la spécification YAML 1.2 est sortie il y a déjà un moment (mai 2008). Il y a deux sections intéressantes au début : Relation to XML et Relation to JSON. Voilà qui est clair :).