KeroTools

Convertir YAML en JSON et Inversement

Convertissez des fichiers YAML en JSON ou du JSON en YAML instantanément — outil gratuit pour développeurs.

Entrée
0 caractères
Sortie

Votre fichier reste sur votre appareil

Rien à supprimer ensuite

Sûr pour les pipelines et les secrets

Fonctionne dans tout navigateur moderne

Comment ça marche

  1. 1

    Collez du YAML ou du JSON

    Une définition de pipeline, un manifeste Kubernetes, un fichier compose, un fichier de langue ou une charge d’API.

  2. 2

    Lisez les avertissements

    Valeurs retypées, commentaires perdus et clés en double sont listés avant que vous n’emportiez la sortie.

  3. 3

    Copiez le résultat

    Emportez-le dans un dépôt, un corps de requête, un fichier de configuration ou un jeu de test.

Pourquoi cet outil

Les types devinés sont signalés

Toute valeur sans guillemets que YAML lirait comme booléen, nombre ou date vous est montrée avant conversion.

Le problème norvégien est détecté

Un NO nu est bien plus souvent un code pays que le mot faux, et l’on vous dit lequel vous avez obtenu.

Les zéros initiaux survivent

Numéros de téléphone, codes postaux et identifiants gardent le zéro qu’une lecture octale dévorerait.

La perte de commentaires est signalée

JSON n’a pas de commentaires : on vous dit combien disparaîtront plutôt que de le découvrir en relecture.

Ancres et alias explicités

Les nœuds partagés sont développés vers JSON, et le développement est affiché : rien ne change à votre insu.

Rien ne quitte le navigateur

Fichiers de pipeline, manifestes et playbooks sont convertis sur cette page et envoyés nulle part.

YAML devine ce que vos valeurs signifient, et ces devinettes ont des victimes célèbres

JSON vous demande de dire ce qu’est une valeur : les guillemets font une chaîne, des chiffres nus font un nombre, et rien n’est ambigu. YAML, lui, infère, et cette inférence est la première source de surprise du format. Le cas le plus connu porte un nom — le problème norvégien. Écrivez une liste de codes pays et l’entrée `NO` n’arrive pas comme la chaîne que la Norvège attend ; sous les règles de YAML 1.1 elle arrive comme le booléen faux, car la spécification recense `y`, `yes`, `n`, `no`, `on`, `off`, `true` et `false` dans toutes leurs casses comme littéraux booléens. La même règle transforme le `ON` de l’Ontario en vrai, transforme une colonne de réponses `Y` et `N` en booléens, et transforme le `NO` d’un jeu de données de chimie en faux. Cela empire parce que les analyseurs divergent : YAML 1.2 a réduit la liste à `true` et `false`, mais beaucoup de logiciels implémentent encore 1.1 ou un entre-deux, si bien que le même fichier signifie des choses différentes en Python, en Go et en Ruby. Le correctif tient en un caractère de guillemet ; le difficile est de savoir où il vous le faut. C’est à cela que servent les avertissements ici.

Des nombres qui ne sont pas ceux que vous avez écrits

La deuxième famille de surprises est plus discrète que la première, car elle produit une valeur et non une erreur. Un zéro initial a un sens en YAML 1.1 : `0755` est octal et vaut 493, ce qui convient si vous pensiez à des permissions de fichier et se trompe dans tous les autres cas. Un numéro de téléphone écrit `0612345678` cesse donc d’être cette chaîne, et un identifiant commençant par `08` ou `09` n’est même pas de l’octal valide, si bien que les analyseurs se partagent entre lever une erreur et retomber sur une chaîne — le même fichier se chargeant proprement sur une machine et échouant sur une autre. Les numéros de version souffrent autrement : `1.10` est un flottant, et un flottant ne garde pas ses zéros de fin, donc la valeur revient en 1.1 et votre épinglage de dépendance désigne désormais une autre publication. YAML 1.1 comprenait aussi le sexagésimal, raison pour laquelle `12:30:00` pouvait arriver en 45000 et une adresse MAC se muer en très grand entier. Et un scalaire qui ressemble à une date, comme `2026-07-31`, est analysé en objet date plutôt qu’en chaîne — d’où un champ de version ou une référence de facture qui arrive en horodatage dans un langage et en chaîne dans un autre.

La typographie française met une espace avant les deux-points, et c’est exactement la séquence interdite

Voici un piège que les équipes francophones rencontrent plus que les autres, et il vient de la typographie elle-même. YAML sépare une clé de sa valeur par un deux-points suivi d’une espace, et c’est précisément pourquoi un scalaire nu n’a pas le droit de contenir cette séquence : dès que l’analyseur la voit, il croit lire une nouvelle clé. Or l’usage français impose une espace insécable avant les deux-points, le point-virgule, le point d’interrogation et le point d’exclamation. Une chaîne d’interface parfaitement correcte comme `Nom de l’utilisateur : ` contient donc littéralement la séquence la plus dangereuse du format. Le résultat dépend de ce qui suit : si quelque chose vient après, la ligne devient une mise en correspondance imbriquée et votre fichier de traduction se met à décrire une structure au lieu d’un texte ; si rien ne suit, vous obtenez une erreur d’analyse dont le message ne parle pas de typographie. Le même problème frappe le dièse précédé d’une espace, qui ouvre un commentaire et tronque la fin d’une phrase. Comme les fichiers de langue de Rails, de Symfony et de la plupart des frameworks sont en YAML, c’est un incident de traduction courant, et la parade est invariable : mettez toute chaîne destinée à l’affichage entre guillemets, sans exception.

Convertir vers JSON fait perdre des choses, et les commentaires sont celle qui manquera

On décrit souvent YAML comme un sur-ensemble de JSON, et pour les données c’est presque vrai — mais pour les données seulement. Ce que YAML ajoute ne survit pas à l’aller-retour. Les commentaires sont la perte évidente et douloureuse : un manifeste Kubernetes, un pipeline d’intégration ou un playbook Ansible est typiquement à moitié constitué d’explications, et un passage par JSON en efface chaque ligne en silence — voilà comment un relecteur se retrouve devant une configuration dont le raisonnement s’est évaporé. Les ancres et alias sont la deuxième perte. YAML permet de définir un nœud une fois avec `&defaults`, d’y faire référence avec `*defaults` et de le fusionner dans d’autres mises en correspondance grâce à la clé de fusion ; JSON n’a pas cette notion, donc la conversion doit développer chaque référence en copie. Le document signifie toujours la même chose, mais la définition partagée a disparu, et une modification future censée changer cinq endroits n’en change plus qu’un. YAML autorise aussi plusieurs documents dans un même flux et des clés qui ne sont pas des chaînes — ni l’un ni l’autre n’a d’équivalent JSON. Cet outil signale chacun de ces points au lieu de les exécuter sans bruit.

On peut demander à un analyseur YAML de construire des objets, et c’est une faille d’exécution de code

C’est la propriété de sécurité qui sépare YAML de JSON, et il vaut la peine de le dire nettement, car les valeurs par défaut ont longtemps été mauvaises. YAML gère des balises qui indiquent à l’analyseur quel type construire, et plusieurs implémentations ont pris cela au pied de la lettre : un document contenant `!!python/object/apply:os.system` ordonne à un chargeur naïf d’appeler cette fonction avec les arguments que vous fournissez. Dans PyYAML, la fonction nommée `load` faisait exactement cela depuis des années tandis que `safe_load` ne le faisait pas, ce qui signifiait que lire un fichier de configuration avec la fonction au nom le plus évident constituait une exécution de code à distance si un attaquant pouvait influencer le fichier. La même classe de bogue est apparue en Ruby, en Java via SnakeYAML et dans des désérialiseurs .NET. La leçon dépasse YAML : tout format capable de décrire quelle classe instancier est un format de code et non de données, et une entrée non fiable doit passer par un chargeur restreint aux scalaires simples, aux séquences et aux mises en correspondance. Cet outil ne construit rien du tout : il analyse vers des données brutes et s’arrête là.

C’est dans le YAML que vivent les secrets, d’où l’argument de la conversion locale

Regardez ce qui s’écrit réellement en YAML et l’argument de le garder sur votre machine se construit tout seul. C’est le format de l’infrastructure : pipelines d’intégration continue, manifestes et secrets Kubernetes, valeurs Helm, fichiers docker-compose, playbooks et inventaires Ansible, fichiers de variables Terraform, définitions de services. Dans la plupart des dépôts, une configuration d’intégration continue est le fichier le plus dense en identifiants qui soit présent : il nomme le registre, la cible de déploiement, les environnements, et il référence généralement les jetons par les noms de variables exacts qui les déverrouillent. Un Secret Kubernetes est encodé en base64, pas chiffré — c’est-à-dire du texte clair avec une étape en plus. Et l’on ouvre un convertisseur précisément quand l’un de ces fichiers a échoué et doit être examiné : l’exemple dans le presse-papiers est donc le vrai, pas un échantillon caviardé. Tout, sur cette page, s’exécute en JavaScript dans votre navigateur sans émettre de requête ; ouvrez le panneau réseau de vos outils de développement avant de coller et vous verrez le compteur ne pas bouger.

Erreurs courantes à éviter

  • Laisser un code pays ou une abréviation sans guillemets. Sous les règles de YAML 1.1, `NO`, `ON`, `Y` et `N` sont des littéraux booléens : la Norvège devient faux et l’Ontario devient vrai.
  • Écrire un identifiant avec un zéro initial. `0755` est octal, un numéro de téléphone cesse d’être cette chaîne, et ce qui commence par `08` n’est même pas de l’octal valide.
  • Laisser une chaîne d’interface française sans guillemets. L’espace avant les deux-points, imposée par la typographie, est exactement la séquence qui fait croire à l’analyseur qu’une nouvelle clé commence.
  • Indenter avec une tabulation. Les tabulations sont interdites comme indentation partout en YAML, et le message d’erreur ne vous le dira pas car le caractère est invisible.
  • Charger du YAML non fiable avec un chargeur permissif. Les balises peuvent nommer une classe à construire : c’est ainsi que lire une configuration est devenu une exécution de code dans PyYAML et SnakeYAML.

Comparaison

CritèreCet outilConvertisseurs en ligneUn outil en ligne de commande
Fichier envoyé à un serveurJamaisLe plus souventNon
Avertit des types devinésOuiNonRarement
Signale les commentaires perdusOuiNonNon
Détecte les clés en doubleOuiRarementVariable
Construit des objets depuis les balisesJamaisVariableSelon le chargeur
PrixGratuitGratuit / offres payantesGratuit

Fonctionnalités

Les deux sens

De YAML vers JSON et de JSON vers YAML, avec l’indentation et le style de guillemets sous votre contrôle.

Avertissements de coercition

Chaque scalaire typé implicitement est listé avec la valeur lue par YAML et celle que vous vouliez sans doute.

Détection des clés en double

Une clé répétée écrase en silence chez la plupart des analyseurs : elle est signalée au lieu d’être appliquée.

Flux multi-documents

Les documents séparés par trois tirets sont traités et mappés vers un tableau JSON plutôt qu’abandonnés.

Développement des ancres et alias

Les nœuds partagés et fusionnés sont résolus avec leur développement visible, clés de fusion comprises.

Gros fichiers pris en charge

Un long manifeste ou un fichier de traduction complet se convertit sans envoi ni plafond de taille.

Rien à installer

Pas d’outil de build, pas d’environnement d’exécution, pas de dépendances : tout se passe sur la page web.

Compatible arabe et RTL

Interface complète en huit langues, dont l’arabe de droite à gauche.

Sécurisé par défaut

Servi en HTTPS, sans suivi du contenu ni envoi à un tiers.

Qui l’utilise

Ingénieurs plateforme et DevOps

Vérifier ce que dit vraiment un manifeste une fois les ancres développées.

Développeurs back-end

Transformer une charge JSON en fichier de configuration lisible, ou l’inverse.

Équipes de localisation

Déplacer des fichiers de traduction entre un framework à base de YAML et un à base de JSON.

Qui débogue un pipeline

Trouver la valeur sans guillemets qu’un analyseur a lue comme un booléen.

Questions Fréquentes

Non. Tout s’exécute localement dans votre navigateur — votre texte n’est jamais envoyé, stocké ni partagé.

Oui — entièrement gratuit, sans compte et sans limite.