YamlBox

YAML outils · 6 minutes de lecture

YAML à JSON : convertir des configs sans perdre la tête

La conversion de YAML en JSON est un travail de deux secondes jusqu'à ce que ce ne soit plus le cas : un onglet parasite, une clé en double ou un deuxième document caché derrière un marqueur `---` transforme une conversion propre en un bug silencieux de perte de données. Ce guide explique ce qu'une bonne conversion YAML en JSON devrait faire pour vous, ainsi que les modes de défaillance spécifiques qui méritent d'être vérifiés avant que la sortie ne soit expédiée n'importe où.

Mis à jour

Ce que fait réellement une conversion de YAML en JSON

YAML et JSON décrivent les mêmes formes — cartes, listes, chaînes, nombres, booléens et null — donc la conversion consiste principalement à re-sérialiser une syntaxe comme l'autre. Ce qui change, c'est la surface : l'indentation devient des accolades, les commentaires disparaissent, les ancres deviennent des copies et les chaînes multilignes se transforment en `\n` échappements. Chacune de ces transformations entraîne des pertes d'une manière qui compte, c'est pourquoi l'étape de conversion mérite d'être effectuée délibérément plutôt que de la traiter comme un formatage après coup.

La raison pratique de convertir est que JSON est ce que veut le prochain outil. Kubernetes accepte YAML, mais `kubectl`, les pipelines jq, les appels API et JavaScript parlent tous JSON plus confortablement. Une conversion unique, correctement, surpasse l'édition manuelle de deux formats en parallèle.

Multidocument YAML : le problème silencieux du premier document

Un fichier YAML peut contenir plusieurs documents séparés par `---`. La plupart des convertisseurs renvoient discrètement le premier et jettent le reste. Ainsi, un ensemble de manifestes avec un déploiement, un service et un ConfigMap devient un seul objet sans avertissement. Une conversion correcte émet un tableau de documents ou vous demande explicitement lequel vous voulez. Si un convertisseur n'offre pas un tel contrôle, il perd des données.

Les erreurs doivent pointer vers une ligne et une colonne

La tolérance de YAML pour les espaces est exactement la raison pour laquelle les petites erreurs sont difficiles à trouver. Les tabulations sont illégales pour l'indentation, un deux-points manquant transforme un mappage en chaîne et les clés en double sont acceptées par certains analyseurs et rejetées par d'autres. Lorsqu'une conversion échoue, le seul message utile nomme la ligne et la colonne et affiche l'extrait incriminé :

                spec:
  containers:
	- name: web      # tab used for indentation
error: line 3, column 0 — tabs cannot be used for indentation
              

Les clés en double constituent le cas dangereux : les analyseurs YAML conservent généralement la dernière valeur et ne disent rien. Si `replicas: 3` apparaît deux fois, le JSON que vous obtenez semble parfaitement valide — et le mauvais numéro.

Citer des règles qui survivent au voyage

JSON est plus strict sur les chaînes que YAML, donc les conversions ajoutent des guillemets autour des valeurs qui étaient nues. C'est normal, mais deux bizarreries de YAML provoquent de vrais bugs : `yes`, `no`, `on` et `off` sont des booléens dans YAML 1.1, mais les chaînes dans la sémantique JSON et les valeurs zéro non significatives telles que les codes postaux et les numéros de téléphone perdent leur zéro lorsqu'elles sont traitées comme des nombres. Si un champ doit rester une chaîne tout au long de la conversion, citez-le dans la source.

Exécutez-le localement, en particulier pour les configurations de cluster

Les manifestes Kubernetes contiennent régulièrement des informations d'identification dans les objets `Secret`, des chaînes de connexion dans ConfigMaps et des jetons dans les fichiers CI. Les coller dans un service Web les transmet à un serveur que vous ne contrôlez pas. Un convertisseur basé sur un navigateur effectue l'analyse et la sérialisation dans le même onglet que vous lisez, donc rien n'est transmis – et une page qui continue de fonctionner avec le réseau coupé en est une preuve plutôt qu'une promesse.

Un flux de travail judicieux

  1. Validez d'abord le YAML et corrigez les éventuelles lignes, colonnes et extraits rapportés.
  2. Choisissez comment les fichiers multi-documents doivent être gérés : un tableau ou un document spécifique.
  3. Convertissez avec une indentation qui correspond à votre style de base de code (2 ou 4 espaces) et triez les clés si vous différez la sortie.
  4. Gardez YAML comme source de vérité dans git et traitez le JSON comme un artefact généré ; les commentaires ne vivent que dans le YAML.

YAML à JSON — questions fréquemment posées

La conversion de YAML en JSON fait-elle perdre des commentaires ?

Oui. JSON n'a pas de syntaxe de commentaire, donc chaque commentaire est supprimé lors d'une conversion YAML en JSON. C'est la principale raison pour laquelle les équipes conservent YAML comme format de création et régénèrent JSON comme sortie de build au lieu de l'inverse.

Pourquoi mon YAML échoue-t-il avec seulement un message d'indentation ?

L’indentation est la structure de YAML. Un caractère de tabulation, un espace déplacé ou une touche indentée d'un niveau trop profond modifient tous la signification du document, de sorte que les analyseurs s'arrêtent à la première ambiguïté. La solution consiste à lire la ligne rapportée avec l'extrait et à la comparer à la ligne ci-dessus.

Un convertisseur de navigateur YAML vers JSON est-il sûr pour les secrets Kubernetes ?

C'est lorsque la conversion s'exécute entièrement dans la page. Le convertisseur YamlBox analyse localement avec une bibliothèque YAML groupée, n'effectue aucun appel réseau et continue de fonctionner avec le réseau désactivé — de sorte qu'un manifeste secret ne quitte jamais l'onglet.

Outils mentionnés dans cet article

Parcourez la liste complète des 19 outils

Plus d'articles à lire

6 minutes de lecture

JSON diff : comparer les données telles qu'elles sont

Comparez deux charges utiles JSON avec une différence structurelle JSON qui ignore l'ordre des clés et les espaces, met en évidence les valeurs déplacées et montre pourquoi les différences de texte induisent en erreur.

Tous les 19 messages →