Mode d’emploi
- Choisissez le sens de conversion : JSON → YAML ou YAML → JSON.
- Collez vos données ou cliquez sur « Essayer un exemple ». Le résultat se met à jour à mesure que vous saisissez du texte.
- Choisissez une indentation de 2 ou 4 espaces pour le résultat.
- Copiez ou téléchargez le résultat. « Utiliser le résultat comme entrée » inverse le sens de conversion pour vous permettre de revenir au format initial.
Fonctionnement
La conversion utilise la bibliothèque open source yaml (version 2), qui implémente la spécification YAML 1.2. À toutes fins pratiques, YAML 1.2 est un surensemble de JSON : tout document JSON peut donc être converti en YAML sans perte, et un YAML qui n’utilise que des mappages, des listes, des chaînes, des nombres, des booléens et null peut être reconverti en JSON identique.
Lors de la génération de YAML, l’outil met entre guillemets les chaînes qui pourraient être interprétées autrement. Les analyseurs YAML 1.1 plus anciens, comme PyYAML et de nombreux outils CI, interprètent yes, no, on et off comme des booléens, 0777 comme un nombre octal et 2024-01-31 comme une date. Ces valeurs sont donc écrites « yes », « 0777 » et « 2024-01-31 ». Les longues chaînes ne sont pas réparties sur plusieurs lignes. Les commentaires ne peuvent pas être conservés, car JSON ne prend pas en charge les commentaires.
Lors de la lecture du YAML, les ancres (&name) et les alias (*name) sont développés, y compris la clé de fusion <<. Un fichier contenant plusieurs documents séparés par --- devient un tableau JSON. Pour protéger votre navigateur, le développement des alias est limité, ce qui bloque les documents de type « billion laughs ». Les valeurs YAML sans équivalent en JSON sont converties de la manière la plus proche possible : .inf et .nan deviennent null, et les horodatages restent des chaînes. Les erreurs de syntaxe sont signalées avec leur ligne et leur colonne.
Exemples
Manifeste Kubernetes
Un script génère un Deployment en JSON, qui est converti dans la structure YAML attendue par les utilisateurs de kubectl, avec les listes sous containers présentées sous la forme - name: web. Les valeurs comme « no » restent entre guillemets et sont donc conservées comme chaînes.
Configuration CI avec ancres
Un fichier de pipeline définit des valeurs par défaut avec defaults: &defaults et les réutilise avec <<: *defaults. La conversion en JSON montre précisément les clés obtenues par chaque tâche après la fusion.
Spécification OpenAPI
Un fichier OpenAPI est géré en YAML, mais un générateur de code a besoin de JSON. Collez le YAML, choisissez une indentation de 2 espaces et téléchargez le fichier .json.
Foire aux questions
Pourquoi « yes » est-il écrit entre guillemets dans mon YAML ?
Selon les règles de YAML 1.1, encore utilisées par PyYAML, Ansible et bien d’autres outils, yes, no, on et off sans guillemets sont interprétés comme des booléens. Les guillemets garantissent que ces valeurs restent des chaînes dans tous les analyseurs. Ils ne font pas partie de la valeur.
Les commentaires YAML sont-ils conservés lors de la conversion en JSON ?
Non. JSON ne possède pas de syntaxe pour les commentaires, ils sont donc supprimés. Leur conversion du JSON vers YAML ne les rétablira pas.
Que se passe-t-il avec plusieurs documents YAML séparés par --- ?
Ils sont convertis en un seul tableau JSON contenant un élément par document, dans le même ordre. Un document unique est directement converti en sa valeur.
Qu’en est-il des balises personnalisées comme !Ref de CloudFormation ?
Les balises propres à une application ne sont pas reconnues. L’outil affiche un avertissement et convertit la valeur balisée comme une valeur ordinaire. Ainsi, !Ref MyBucket devient la chaîne « MyBucket » et la balise est perdue.
Confidentialité
Les deux conversions s’effectuent entièrement dans votre navigateur. Votre JSON ou YAML n’est ni envoyé, ni stocké, ni inclus dans les données analytiques.