Ce que fait cet outil
YAML est un sur-ensemble de JSON : l’essentiel de la conversion est donc sans histoire. Les dictionnaires deviennent des objets, les séquences des tableaux, les scalaires des chaînes, des nombres, des booléens ou null.
Ce qui suit est l’endroit où ça cesse d’être sans histoire.
Les identifiants longs gardent leurs chiffres
id: 12345678901234567890
{ "id": 12345678901234567890 }
Cela paraît banal, et c’est justement le but. Un nombre JSON est un flottant double précision et porte une quinzaine de chiffres ; un identifiant de vingt chiffres — un flocon Twitter, un bigint PostgreSQL — ressortait autrefois comme un autre nombre, en silence. Les chiffres sont maintenant lus exactement et réécrits tels quels.
Les ancres sont dépliées, parce que JSON ne sait pas les porter
defaults: &d
retries: 3
web:
<<: *d
devient deux copies de retries: 3. JSON n’a pas la notion d’une valeur présente à deux endroits : le partage ne peut pas survivre à la traversée. La sortie est plus grosse que l’entrée, rien n’est perdu — mais la relation, si, et cela mérite d’être su avant de convertir un fichier bâti sur des ancres puis de le reconvertir.
Plusieurs documents deviennent un tableau
--- sépare les documents. JSON n’a pas de séparateur : un flux de trois documents devient donc un tableau de trois valeurs. Un document unique n’est pas emballé — vous obtenez l’objet.
Les nuls, tous les trois
~, null et une valeur vide signifient tous null en YAML, et tous trois deviennent null. C’est un des rares endroits où JSON est plus simple que YAML, et non l’inverse.
Ce que cette conversion ne peut pas trancher à votre place
yes est lu comme la chaîne "yes", parce que c’est ce que dit YAML 1.2. Un fichier écrit pour PyYAML, qui applique YAML 1.1, voulait dire le booléen vrai.
Rien dans le fichier ne dit quelle version son auteur avait en tête. Si votre YAML vient d’un outil Python et qu’un yes, no ou on nu compte, mettez-le entre guillemets à la source — et sachez que l’ambiguïté est dans le fichier, pas dans le convertisseur.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.