Outils de développement · Convertisseurs de syntaxe
Comment fonctionne la conversion JSON vers YAML : citations, indentation et style de flux
· Comment ça marche
json yaml workflow de développeur
JSON vers YAML ressemble à une question de suppression d'accolades, mais un convertisseur prend de vraies décisions sur les chaînes qui nécessitent des guillemets et quand utiliser le style bloc ou flux. Cet article passe en revue ces décisions.
Les accolades disparaissent, mais où vont les guillemets ? — une charge utile JSON convertie en YAML et le mélange de chaînes entre guillemets et nues dans le résultat
La suppression des accolades et des guillemets ne transforme pas un objet JSON en un fichier YAML digne de confiance. Le convertisseur doit décider comment un mappage imbriqué, un tableau, une chaîne et une nouvelle ligne sont représentés et si une valeur qui ressemble à un nombre ou à un booléen reste du texte. Un ingénieur DevOps qui déplace une définition de service API vers Compose a besoin que ces décisions soient prévisibles avant de copier le résultat dans un répertoire de déploiement. La conversion modifie la syntaxe, pas la configuration réelle du service.
JSON est (presque) déjà YAML - pourquoi l'entrée est valide dans le style de flux YAML 1.2 avant même le début de la conversion
YAML 1.2 traite la syntaxe JSON comme un sous-ensemble de style de flux autorisé pour les données de forme JSON ordinaires, ce qui explique pourquoi un objet JSON est déjà proche de YAML. Mais une conversion utile passe généralement à une indentation de type bloc lisible par l’homme. L'entrée est d'abord analysée au format JSON ; les commandes shell arbitraires ne sont jamais exécutées. ToolAcre charge YAML via un schéma restreint sur le chemin inverse, rejette les balises non sécurisées et limite l'expansion des alias, de sorte qu'un convertisseur ne peut pas être utilisé pour instancier des objets arbitraires à partir d'une balise !!js/function non fiable.
Style de bloc par rapport au style de flux : comment un convertisseur choisit les mappages et les séquences basés sur l'indentation plutôt que les accolades et les crochets, et ce que signifie la profondeur d'indentation.
Le style de bloc utilise des paires clé/valeur en retrait et des lignes commençant par un tiret pour les éléments du tableau : une chaîne d'image sous services.web est en retrait sous Web, tandis que les ports deviennent une séquence. Le style Flow conserve les accolades et les crochets de type JSON. ToolAcre utilise le dump js-yaml avec une indentation à deux espaces par défaut, aucune référence et un paramètre de largeur de ligne illimité, plutôt que de simplement remplacer la ponctuation par une expression régulière. La modification de la largeur du retrait affecte la lisibilité, et non les clés réelles ou l'ordre du tableau.
Quelles chaînes doivent rester entre guillemets : valeurs qui autrement deviendraient des booléens, des nombres, des valeurs nulles ou des dates, et des chaînes avec des deux-points, des hachages ou des espaces de début.
Certaines chaînes doivent être citées pour survivre à un autre analyseur : "false" doit rester du texte plutôt que du booléen false, "2026-09-28" ne doit pas devenir silencieusement une date dans un consommateur YAML 1.1, et un deux-points suivi d'un espace peut être confondu avec une syntaxe de mappage. Le dumper de ToolAcre choisit des guillemets de protection, y compris des choix de compatibilité pour les anciens lecteurs YAML. Il n'est pas toujours nécessaire de citer une référence d'image ordinaire avec deux points, et la suppression gratuite des guillemets présents peut interrompre un aller-retour. Vérifiez les types ainsi que l’apparence visuelle.
Chaînes multilignes : comment une nouvelle ligne à l'intérieur d'une chaîne JSON peut devenir un bloc scalaire littéral (|) ou plié (>)
Une chaîne JSON contenant une nouvelle ligne réelle peut être rendue sous forme de bloc scalaire YAML avec |. Le formulaire |- supprime la nouvelle ligne finale, alors que | le préserve; > plierait certains sauts de ligne en espaces. Ces indicateurs décrivent les données, pas la garniture de formatage. Le dumper de ToolAcre choisit une représentation qui peut relire la chaîne d'origine plutôt que de toujours forcer un style. Après la conversion, inspectez attentivement une valeur d'environnement ou un certificat multiligne : les erreurs d'indentation ici peuvent modifier ce que l'application reçoit.
Exemple pratique : conversion d'une définition de service – un objet JSON imbriqué en YAML, avec chaque décision de citation et de style annotée
Pour un objet JSON concret, utilisez services.web avec l'image "example/web:1", les ports ["8080:80"] et les clés d'environnement DEBUG="false", RELEASE="2026-09-28" et MESSAGE="line one\nline two". ToolAcre émet l'image : example/web:1 et une liste de ports ; DEBUG devient cité « faux », RELEASE cité « 2026-09-28 » et MESSAGE utilise un bloc |- avec deux lignes en retrait. Chaque choix protège les types originaux. Exécutez la vérification round-trip du panneau avant de sauvegarder sous compose.yaml ; le convertisseur ne peut pas dire si l'image existe ou si le service va démarrer.
Ce que cela ne couvre pas : l'ajout de commentaires, d'ancres ou d'un ordre de clé personnalisé, dont aucun n'existe dans la source JSON à transférer
JSON n'a pas de commentaires, d'ancres ou d'alias à conserver : un convertisseur ne peut pas les récupérer à partir d'une entrée qui ne les a jamais contenus. Il ne peut pas non plus déduire la gestion des secrets spécifiques à Compose, un ordre de clés personnalisé ou la validité de la version de l'API Kubernetes. Deux fichiers YAML peuvent sérialiser les mêmes données tout en utilisant des styles d'espaces et de guillemets différents. Examinez le résultat dans le programme cible et évitez de coller de vrais jetons API dans des services de conversion externes.
À retenir : la conversion est une re-sérialisation avec des règles – et comment le panneau des convertisseurs de syntaxe produit le YAML dans votre navigateur
La conversion consiste à analyser et à re-sérialiser selon un ensemble de règles, et non à supprimer la ponctuation. Les convertisseurs de syntaxe effectuent ces opérations dans votre navigateur ; inspectez localement une configuration sensible et effectuez un aller-retour sur un petit objet de test avant d’appliquer la méthode à un fichier plus volumineux. Si une valeur cotée change de type au retour, le formatage n'est pas simplement cosmétique et nécessite une enquête.