Convertir JSON en YAML
JSON vers YAML convertit un document en YAML dans votre navigateur et vérifie le résultat en l’analysant en retour. La règle qui rend cela possible : une chaîne est quotée dès que l’écrire telle quelle résoudrait autre chose — la chaîne "no" garde donc ses guillemets, tout comme "007", "null" et "12:30".
Comment fonctionne Convertir JSON en YAML ?
Passer de JSON à YAML semble la direction facile — YAML est un sur-ensemble, donc tout document JSON est déjà du YAML valide. C’est vrai, et ce n’est pas le travail. Le travail, c’est de produire un YAML qu’un humain aura envie de lire, ce qui veut dire le style bloc plutôt que le style en ligne, et c’est là qu’apparaît le problème d’exactitude.
Les guillemets ne sont pas cosmétiques
YAML résout les scalaires non quotés selon leur motif. Écrivez la chaîne no sans guillemets et un lecteur YAML 1.1 charge le booléen false. Écrivez 007 et vous obtenez le nombre 7. Écrivez null, true, 12:30, 0x1f ou .inf et chacun revient sous une forme qui n’est pas une chaîne.
L’émetteur fait donc tourner les règles de résolution en sens inverse : une chaîne est quotée dès que l’écrire nue résoudrait autre chose qu’elle-même. Il quote aussi les jetons que 1.1 résoudrait différemment même si 1.2 ne le ferait pas, car la sortie doit signifier la même chose partout où elle est lue. Voilà pourquoi le résultat porte des guillemets à des endroits qui semblent inutiles — chacun d’eux est porteur de sens.
L’aller-retour est vérifié, pas seulement affirmé
Chaque conversion est réanalysée puis comparée au JSON d’origine, et le résultat est signalé dans la bande de statistiques. Une règle de guillemets qui rate un seul cas est exactement le genre de bug qui produit une sortie plausible et une configuration corrompue ; la vérification s’exécute donc sur votre document, et pas seulement dans une suite de tests.
Les chaînes multilignes deviennent des blocs scalaires
Une chaîne contenant des retours à la ligne s’écrit comme un bloc |, et c’est la raison pour laquelle on met des certificats, des scripts et du SQL en YAML plutôt qu’en JSON : une clé PEM en JSON est une seule ligne illisible d’échappements \n. L’indicateur de chomping suit les données — | quand la chaîne se termine par un retour à la ligne, |- quand ce n’est pas le cas — si bien que l’octet final survit.
Les clés sont quotées selon la même règle que les valeurs
Une clé est aussi un scalaire. y: 2 se charge en {True: 2} dans un lecteur 1.1, et on: — la deuxième clé de chaque workflow GitHub Actions — en est l’exemple le plus connu. Les clés reçoivent le même traitement que les valeurs, voilà pourquoi "on" sort quoté.
JSON
{
"regions": ["NO", "SE"],
"build": "007",
"enabled": true
}YAML
regions: - "NO" - "SE" build: "007" enabled: true
Quelles options et quels cas limites Convertir JSON en YAML prend en charge ?
| Paramètre | Type | Valeur par défaut | Comportement et cas limites |
|---|---|---|---|
| Indentation | espaces | 2 | Espaces par niveau. YAML interdit complètement les tabulations pour l’indentation, donc il s’agit d’un nombre et non d’un caractère. |
| Indenter les séquences | booléen | off | Off place les tirets de liste à la colonne de la clé parente, ce qui ressemble aux manifests Kubernetes écrits à la main. On les indente d’un niveau, ce que la plupart des bibliothèques émettent. Les deux sont valides. |
| Trier les clés | booléen | off | Alphabétique plutôt que par ordre du document. Utile pour comparer deux configs écrites dans des ordres différents. |
| Début de document | booléen | off | Émet le marqueur ---. Requis lors de la concaténation de plusieurs documents en un seul fichier, comme c’est le cas pour les manifests Kubernetes. |
| Chaînes ambiguës | entre guillemets | toujours | no, yes, on, off, y, n, true, null, ~, 007, 12:30, 0x1f, .inf et la chaîne vide. Chacun résulterait en un non-chaîne si écrit sans guillemets. |
| Chaînes multi-lignes | scalaire en bloc | on | Écrit comme un bloc |, avec l’indicateur d’ajustement correspondant à la présence d’un saut de ligne à la fin de la chaîne, ainsi aucun octet n’est ajouté ou perdu. |
| Conteneurs vides | [] et {} | explicite | Un tableau ou objet vide est écrit en style flux. Les omettre entirely rendrait une liste vide indistinguable d’un null. |
| null | null | null | Écrit comme le mot null plutôt que laissé vide ou écrit comme ~, car c’est l’orthographe qui se lit de la même manière par une personne et par chaque analyseur. |
| Aller-retour | vérifié | à chaque conversion | La sortie est analysée à nouveau et comparée à l’entrée. Le résultat est affiché dans la barre de statistiques plutôt que supposé. |
Questions fréquentes
Pourquoi a-t-il mis des guillemets autour de ma chaîne d’apparence banale ?
Parce que l’écrire telle quelle résoudrait autre chose. "no" devient le booléen false dans un lecteur YAML 1.1, "007" devient le nombre 7, "12:30" devient un nombre sexagésimal, et "null" devient null. Les guillemets sont la seule chose qui maintient la valeur en chaîne, ce que la vérification d’aller-retour de la bande de statistiques confirme sur votre document réel.
Le YAML est-il vraiment plus compact que le JSON ?
En général, et la bande de statistiques affiche le chiffre pour votre document. Supprimer les accolades, les crochets et les guillemets autour des clés retire une fraction surprenante d’un fichier de configuration. Ce que le YAML apporte par rapport au JSON n’est toutefois pas la taille — ce sont les commentaires, que JSON n’a aucun moyen d’exprimer, et des chaînes multilignes lisibles.
Puis-je récupérer mes commentaires ?
Non, et rien ne le peut. JSON n’a pas de commentaires, donc quand un document est devenu du JSON, les commentaires ont déjà disparu — l’entrée n’a rien à récupérer. Si vous éditez un fichier YAML, éditez le YAML : un aller-retour en JSON supprime tous les commentaires et ne rétablit rien.
Quel style de liste dois-je utiliser ?
L’un ou l’autre ; ils s’analysent de façon identique. Les tirets alignés sur la colonne de la clé parente donnent leur allure aux manifestes Kubernetes écrits à la main et aux workflows GitHub, et cela économise deux colonnes d’indentation sur les fichiers profondément imbriqués. Les tirets indentés sont ce que la plupart des bibliothèques émettent et ce qu’exigent certains styles maison. Choisissez celui qui correspond aux fichiers qui l’entourent.
Pourquoi ma chaîne multiligne n’est-elle pas échappée comme elle l’était en JSON ?
Parce qu’elle est écrite comme un bloc scalaire |, qui conserve de vrais retours à la ligne au lieu d’échappements \n. C’est la meilleure raison d’utiliser YAML pour un fichier de configuration : un certificat PEM ou un script shell est lisible en YAML et n’est qu’une ligne de 3 000 caractères en JSON. L’indicateur de chomping est choisi pour préserver la présence ou non d’un retour à la ligne finale.
Mon JSON est-il envoyé ?
Non. L’analyse, la conversion et l’aller-retour de vérification s’exécutent tous dans votre navigateur. Vous pouvez le confirmer dans le panneau Réseau. Cela compte ici parce qu’un JSON converti en YAML est généralement destiné à devenir un fichier de configuration, et que les fichiers de configuration transportent des chaînes de connexion et des clés.