YAML outils · 5 minutes de lecture
JSON à YAML : rendre à nouveau lisible la sortie machine
JSON est excellent sur le fil et désagréable dans une pull request. Lorsqu'une réponse API, un fragment d'état Terraform ou un manifeste de package doit devenir quelque chose qu'un humain examine ligne par ligne, une conversion JSON en YAML est la réponse habituelle - et les détails de la façon dont cette conversion entre guillemets et retraits décident si le résultat reste lisible six mois plus tard.
Mis à jour
Pourquoi convertir JSON en YAML
Les deux formats contiennent des données identiques, mais ils sont optimisés pour des lecteurs différents. JSON dépense des caractères en accolades, virgules et guillemets ; YAML les dépense sur une structure que l'œil peut suivre comme une indentation. Pour les données générées et consommées par les programmes, JSON l'emporte. Pour les données qu'une personne modifie — Helm valeurs, définitions CI, inventaires Ansible, Docker Composer des fichiers — YAML gagne, c'est pourquoi cette direction apparaît chaque fois que les données générées ont besoin d'un propriétaire humain.
Les commentaires sont la seule chose qui ne peut pas survivre
La conversion peut restaurer la lisibilité mais elle ne peut pas restaurer l'intention : la source JSON n'avait aucun commentaire à reporter. Si votre YAML généré sera géré par des personnes, ajoutez un court commentaire d'en-tête décrivant d'où il vient et ce qui le régénère, afin que personne ne modifie un fichier qui sera écrasé lors du prochain déploiement.
Citant : où le YAML converti se brise tranquillement
YAML traite plusieurs mots comme des valeurs plutôt que comme des chaînes. Un convertisseur qui supprime les guillemets de manière agressive peut changer de type sans changer un seul caractère visible :
country: NO # parses as boolean false in YAML 1.1
version: 1.10 # parses as the number 1.1
time: 22:30 # parses as a sexagesimal integer
name: "on" # quoted on purpose — must stay a string
Un bon résultat cite toute chaîne qui pourrait être mal lue — `yes`/`no`/`on`/`off`, des identifiants d'apparence numérique, des valeurs avec des zéros non significatifs, des heures et des dates — plutôt que de tout citer, ce qui produit le mur de ponctuation auquel vous essayiez d'échapper.
Indentation et chaînes multilignes
Deux espaces constituent la valeur par défaut sûre : c'est ce que supposent la documentation Kubernetes, les modèles Helm et la plupart des éditeurs, et ils survivent au copier-coller entre les outils. L'imbrication profonde dans un style à quatre espaces devient difficile à parcourir au-delà d'environ six niveaux. Les chaînes longues sont l'autre décision de formatage : une valeur JSON avec des nouvelles lignes intégrées peut apparaître comme une ligne d'échappement avec échappement ou comme un bloc scalaire YAML qui se lit naturellement. Si le champ est un script shell ou un extrait de configuration, demandez le formulaire de blocage.
Le tri des clés donne du sens aux différences
L'ordre des clés d'objet JSON n'est pas significatif, les convertisseurs sont donc libres de réorganiser. Le tri des clés par ordre alphabétique permet de différencier proprement les fichiers régénérés : sans cela, un ordre de déploiement modifié apparaît comme une réécriture de l'ensemble du fichier. Si vous suivez les YAML générés dans git, le tri est la différence entre une différence sur une ligne et une différence sur deux cents lignes.
Gardez l'aller-retour au même endroit
Étant donné que les deux directions sont inverses, il vaut la peine d'avoir les deux dans le même outil afin que vous puissiez convertir, modifier et reconvertir sans changer de contexte ni coller votre configuration dans trois services différents. Le convertisseur basé sur un navigateur sur ce site s'associe à l'outil YAML vers JSON, fonctionne hors ligne et ne télécharge jamais la charge utile – ce qui est important lorsque le JSON en question est une réponse API de production.
JSON à YAML — questions fréquemment posées
Les YAML convertis conserveront-ils ma commande de clés ?
Les convertisseurs peuvent trier les clés ou conserver l'ordre d'insertion. Le tri est généralement le meilleur choix pour les fichiers suivis dans git car la régénération produit des différences stables et minimes ; conserver l'ordre d'origine lorsque l'ordre lui-même est significatif pour les lecteurs.
Pourquoi une valeur a-t-elle changé de type après une conversion JSON en YAML ?
Les scalaires nus dans YAML sont réinterprétés : `no`, `on` et `off` peuvent devenir des booléens, et des valeurs comme `1.10` peuvent devenir des nombres. Un convertisseur sécurisé cite des chaînes qui autrement seraient mal lues. Si un champ doit rester une chaîne, citez-le explicitement dans le YAML.
Puis-je convertir JSON en YAML hors ligne ?
Oui, la conversion est une analyse locale et une re-sérialisation sans serveur impliqué, de sorte que l'outil continue de fonctionner avec le réseau déconnecté et que vos données ne quittent jamais l'onglet du navigateur.
Outils mentionnés dans cet article
Plus d'articles à lire
6 minutes de lecture
YAML à JSON : convertir des configs sans perdre la tête
Convertissez YAML en JSON dans le navigateur avec la prise en charge de plusieurs documents et les emplacements exacts des erreurs, ainsi que les erreurs YAML qui interrompent discrètement les pipelines CI.
6 minutes de lecture
Formateur JSON : joli, minifié et réellement valide
Un formateur JSON qui imprime, réduit et valide avec précision les emplacements d'erreur, ainsi que les cinq erreurs de syntaxe derrière presque toutes les erreurs JSON invalides.
- Article plus long à lire : YAML vs JSON : quand utiliser lequel (et comment convertir)