Guide
Convertir YAML en JSON dans le code
Quand la conversion a sa place dans un script ou une étape de build plutôt que dans un onglet, voici les équivalents.
Par yamltojsonfree · Publié le · Mis à jour le
Python, Node.js, Go et la ligne de commande
Chaque extrait lit input.yaml et imprime du JSON formaté. Ils ne sont pourtant pas interchangeables — la note sous chacun indique quelle version de YAML la bibliothèque implémente, et cette différence peut changer vos données en silence.
Python
import json, yaml
with open("input.yaml") as f:
data = yaml.safe_load(f) # safe_load, never load()
print(json.dumps(data, indent=2))PyYAML implémente YAML 1.1, no devient donc False ici — contrairement à l’outil du navigateur, qui utilise 1.2 par défaut.
Node.js
import { readFileSync } from "node:fs";
import { load } from "js-yaml";
const data = load(readFileSync("input.yaml", "utf8"));
console.log(JSON.stringify(data, null, 2));js-yaml v5 utilise YAML 1.2 par défaut — le même moteur et les mêmes réglages que l’outil de ce site.
Go
import (
"encoding/json"
"os"
"sigs.k8s.io/yaml"
)
in, _ := os.ReadFile("input.yaml")
out, _ := yaml.YAMLToJSON(in)
os.Stdout.Write(out)sigs.k8s.io/yaml convertit via les tags JSON, ce qu’utilise Kubernetes lui-même.
Bash (yq)
# Single document
yq -o=json input.yaml
# Multi-document into a JSON array
yq -o=json -I=2 'select(document_index >= 0)' -N input.yaml
# Minified
yq -o=json -I=0 input.yamlIl s’agit de mikefarah/yq. L’autre yq (kislyuk) est un wrapper de jq avec des options différentes.
Trois choses à faire correctement dans un script
Utilisez le chargeur sûr. En Python, yaml.load() sans chargeur explicite peut construire des objets Python arbitraires à partir de YAML taggé — c’est de l’exécution de code si l’entrée n’est pas la vôtre. safe_load() n’analyse que des données simples, et il n’y a presque jamais de raison d’utiliser autre chose.
Connaissez votre version de YAML. PyYAML lit YAML 1.1, country: NO ressort donc comme False ; js-yaml v5 et l’analyseur Go façon Kubernetes lisent 1.2, la même ligne reste donc une chaîne. Un pipeline qui convertit avec une bibliothèque et valide avec une autre peut se contredire lui-même. La liste complète des valeurs concernées est dans le guide YAML 1.1 vs 1.2.
Gérez les flux multi-documents. Les sorties Kubernetes et Helm sont généralement plusieurs documents séparés par ---. Un simple load ne lit que le premier et ignore le reste en silence — utilisez yaml.safe_load_all() en Python, loadAll() dans js-yaml, ou l’invocation yq ci-dessus pour obtenir chaque document.
Ou sautez complètement le script
Pour une conversion ponctuelle, le convertisseur YAML vers JSON gratuit fait tout ce qui précède dans le navigateur : flux multi-documents, ancres et clés de fusion, modes YAML 1.1 et 1.2, et erreurs épinglées à la ligne exacte. Rien n’est envoyé — l’analyseur s’exécute entièrement sur votre machine.
Références
- PyYAML : charger du YAML — pourquoi safe_load, jamais load
- README de js-yaml — load, loadAll et options de schéma
- sigs.k8s.io/yaml — YAML vers JSON pour Go avec la sémantique Kubernetes
- Documentation yq (mikefarah) — les options -o=json, -I et -N utilisées ci-dessus
- Spécification YAML 1.2.2 — la version que ciblent la plupart des analyseurs modernes
Tous les outils
YAML vers JSON
Convertisseur YAML JSON en ligne: JSON formaté, minifié, privé et erreurs à la ligne exacte.
OuvrirJSON vers YAML
Convertissez JSON en YAML lisible avec indentation contrôlée, clés triées et sortie prête à copier.
OuvrirValidateur YAML
Validez YAML en ligne: syntaxe, indentation, tabulations et clés dupliquées avec ligne exacte.
OuvrirFormateur YAML
Formatez, embellissez et réindentez YAML avec une indentation propre et les commentaires conservés.
Ouvrir