JSON versus YAML

ViPHP
ViPHP | 4674 Messages

25 janv. 2009, 14:29

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 …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 janv. 2009, 15:38

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 4039 Messages

25 janv. 2009, 16:28

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.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 2287 Messages

25 janv. 2009, 18:06

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...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

25 janv. 2009, 18:27

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.

ViPHP
ViPHP | 4674 Messages

25 janv. 2009, 18:33

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 ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4674 Messages

27 janv. 2009, 01:45

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 :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).