Aller au contenu

Convertir YAML en JSON

Analyse un document YAML avec la bibliothèque yaml (schéma core de YAML 1.2) et le restitue en JSON indenté. Les commentaires sont supprimés, les anchors et aliases sont développés, et des valeurs comme yes ou 2024-01-01 restent des chaînes.

Envoyer des paramètres écrits en YAML à une API ou à un validateur JSON Schema qui n’accepte que du JSON.

YAML

Quand l’utiliser

  • Envoyer des paramètres écrits en YAML à une API ou à un validateur JSON Schema qui n’accepte que du JSON.
  • Vérifier comment un fichier de CI ou Kubernetes est réellement typé, par exemple si une version est une chaîne ou un nombre.

Mode d’emploi

  1. Collez un seul document YAML ou chargez un fichier .yaml/.yml.
  2. Si une erreur apparaît, vérifiez l’indentation, les clés en double et les séparateurs --- à la ligne indiquée.
  3. Contrôlez ce qui est chaîne ou nombre dans le JSON de sortie, puis copiez-le.

Entrée YAML

# deployment settings
service: billing-api
replicas: 2
version: "1.10"
enabled: yes
ports:
  - 80
  - 443
env:
  LOG_LEVEL: info

JSON

{
  "service": "billing-api",
  "replicas": 2,
  "version": "1.10",
  "enabled": "yes",
  "ports": [
    80,
    443
  ],
  "env": {
    "LOG_LEVEL": "info"
  }
}

Détails et limites

L’analyse s’exécute dans le navigateur. La sortie est toujours du JSON à 2 espaces ; il n’y a pas d’option de minification.

Les règles de YAML 1.2 s’appliquent : yes/no/on/off sont des chaînes, pas des booléens, et les dates sans guillemets restent des chaînes. 0o17 est en octal (15).

Les merge keys (<<: *anchor) ne sont pas fusionnées ; elles apparaissent comme une clé littérale "<<". Des clés en double dans un même mapping sont une erreur.

Les entiers au-delà de 2^53 perdent en précision en JSON. Mettez les identifiants longs entre guillemets dans le YAML.

FAQ

Peut-il convertir un fichier contenant plusieurs documents séparés par --- ?

Non. Plusieurs documents provoquent l’erreur "Source contains multiple documents". Collez un document à la fois. Un seul --- en tête ne pose pas de problème.

Pourquoi enabled: yes est-il une chaîne dans le JSON ?

Le parser suit YAML 1.2, où seuls true et false sont des booléens. Écrivez true/false si vous avez besoin d’un booléen JSON.

Les anchors et aliases sont-ils pris en charge ?

Oui. Un alias comme *base est remplacé par une copie de la valeur ancrée. La merge key << de YAML 1.1 n’est en revanche pas appliquée.

Spécifications et références