Un convertisseur YAML ↔ JSON qui vérifie aussi votre fichier
Le YAML sert surtout aux fichiers de configuration : services d'une application, chaîne d'intégration continue, paramètres d'un serveur, fichiers de traduction. Le JSON est le format qu'attendent les API et beaucoup de programmes. Cet outil passe de l'un à l'autre et signale les erreurs avec leur ligne et leur colonne, sans rien envoyer : l'analyse se fait dans votre navigateur.
Mode d'emploi
- Choisissez la conversion : « YAML → JSON », « JSON → YAML » ou « Formater le YAML » (réécriture propre du même fichier).
- Collez votre texte, cliquez sur « Ouvrir un fichier » ou sur « Exemple ».
- Réglez l'« Indentation du JSON » (2 espaces, 4 espaces, tabulation ou « Compact (une ligne) ») ou l'« Indentation du YAML » (2 ou 4 espaces).
- Lisez l'état : « YAML valide. », une liste d'avertissements, ou l'erreur avec un extrait surligné et le bouton « Aller à l'erreur ».
- Passez en « Arborescence » pour explorer les données, puis « Copier » ou « Télécharger ».
YAML et JSON comparés
Les deux formats décrivent les mêmes données. Le YAML remplace accolades et guillemets par l'indentation, le JSON écrit tout explicitement.
| YAML | JSON obtenu |
|---|---|
service: web | "service": "web" |
replicas: 2 | "replicas": 2 |
debug: false | "debug": false |
ports: puis - "8080:80" | "ports": ["8080:80"] |
En mode « Compact (une ligne) », ces quatre lignes tiennent sur une seule ligne JSON de 64 caractères, sans aucune espace. Dans l'autre sens, l'outil écrit un YAML en style bloc et ne met des guillemets que si c'est nécessaire.
Les règles de syntaxe essentielles
- Une clé est suivie de deux-points et d'une espace :
nom: valeur. - L'imbrication se fait par l'indentation, avec des espaces seulement.
- Un élément de liste commence par un tiret et une espace :
- valeur. |garde les retours à la ligne d'un texte,>les remplace par des espaces ;-retire le saut de ligne final,+garde toutes les lignes vides de la fin.&nompose une ancre,*nomla réutilise,<<: *nomfusionne un objet ;---sépare plusieurs documents, que le JSON regroupe dans un tableau.- Un commentaire commence par une espace puis
#.
Erreurs fréquentes et pièges
Une tabulation dans l'indentation est interdite : a: suivi d'une ligne qui commence par une tabulation donne « ligne 2, colonne 1 ». Une ligne décalée d'une espace casse la structure. Une valeur qui contient deux-points et une espace, comme titre: Note: important, est refusée colonne 12 : écrivez titre: "Note: important".
Le piège le plus connu est le « problème de la Norvège » : en YAML 1.1, pays: NO devient le booléen false, tout comme yes, no, on et off. L'outil suit YAML 1.2, la version actuelle : seuls true et false sont des booléens, NO reste le texte « NO ». Comme beaucoup de programmes lisent encore du YAML 1.1, un avertissement vous invite à mettre ces valeurs entre guillemets. D'autres avertissements signalent les clés en double (la dernière valeur l'emporte) et les nombres trompeurs : code_postal: 01000 devient 1000 (512 pour un lecteur YAML 1.1, qui lit un octal), version: 3.10 devient 3.1.
Sécurité
Ne chargez jamais un YAML d'origine inconnue avec un chargeur capable de créer des objets de programmation à partir des étiquettes : préférez toujours le chargeur « sûr » de votre langage. Ici, les étiquettes non standard sont seulement signalées, rien n'est exécuté, et les alias qui ajouteraient plus de 1 000 000 de nœuds (l'attaque dite « billion laughs ») arrêtent la lecture.
Questions fréquentes
Les commentaires passent-ils dans le JSON ?
Non, le JSON n'a pas de commentaires. « Formater le YAML » ne les garde pas non plus et remplace chaque alias par son contenu.
Pourquoi « 3.10 » est-il entre guillemets dans le YAML produit ?
Sans guillemets, 3.10 serait lu comme le nombre 3,1. L'outil met des guillemets à toute chaîne qui ressemble à un nombre, à un booléen ou à null.
Les très grands entiers restent-ils exacts ?
Oui. 12345678901234567890 est recopié chiffre pour chiffre, sans l'arrondi habituel des navigateurs.
Quelle taille de fichier est acceptée ?
Jusqu'à 20 Mo.