Conversion JSON vers YAML : Un guide de migration complet
JSON et YAML reprĂ©sentent les mĂȘmes structures de donnĂ©es avec une syntaxe diffĂ©rente. La conversion entre les deux est simple dans la plupart des cas, mais les cas limites autour des types, des chaĂźnes multilignes et des commentaires nĂ©cessitent de l'attention. Ce guide couvre la correspondance complĂšte entre les formats.
Correspondance de syntaxe
Objets / Mappings
JSON :
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
}
}
YAML :
database:
host: localhost
port: 5432
name: myapp
Tableaux / Séquences
JSON :
{
"servers": ["web1", "web2", "web3"]
}
YAML :
servers:
- web1
- web2
- web3
Structures imbriquées
JSON :
{
"services": [
{
"name": "api",
"ports": [8080, 8443],
"env": {"NODE_ENV": "production"}
}
]
}
YAML :
services:
- name: api
ports:
- 8080
- 8443
env:
NODE_ENV: production
Convertissez instantanément avec notre Convertisseur JSON vers YAML.
Cas limites Ă surveiller
1. Commentaires
YAML prend en charge les commentaires ; JSON non. Lors de la conversion de YAML vers JSON, tous les commentaires sont perdus :
# This comment will be lost in JSON
database:
host: localhost # Also lost
2. ChaĂźnes multilignes
YAML dispose d'une syntaxe multiligne puissante que JSON n'a pas :
description: |
This is a multi-line
string that preserves
line breaks.
En JSON, cela devient :
{
"description": "This is a multi-line\nstring that preserves\nline breaks.\n"
}
3. Ambiguïté de type
YAML détecte automatiquement les types, ce qui peut causer des problÚmes :
version: 1.0 # Float, not string "1.0"
port: 080 # Octal 64, not string "080"
country: NO # Boolean false, not string "NO"
En JSON, les types sont explicites :
{
"version": "1.0",
"port": "080",
"country": "NO"
}
Lors de la conversion de JSON vers YAML, ajoutez des guillemets autour des valeurs qui pourraient ĂȘtre mal interprĂ©tĂ©es.
4. Valeurs null
Les deux prennent en charge null, mais la syntaxe diffĂšre :
value: null # Explicit
value: ~ # YAML shorthand
value: # Empty value = null
{ "value": null }
5. CaractÚres spéciaux dans les clés
Les clĂ©s JSON peuvent contenir n'importe quel caractĂšre unicode. Les clĂ©s YAML avec des caractĂšres spĂ©ciaux doivent ĂȘtre entre guillemets :
"content-type": "application/json" # Hyphen needs quotes
simple_key: value # Underscore is fine
Conversion en ligne de commande
Avec yq (processeur YAML)
# JSON to YAML
yq -P input.json > output.yaml
# YAML to JSON
yq -o=json input.yaml > output.json
Avec Python
# JSON to YAML
python3 -c "import json, yaml, sys; print(yaml.dump(json.load(sys.stdin), default_flow_style=False))" < input.json > output.yaml
# YAML to JSON
python3 -c "import json, yaml, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json
Avec jq + yq ensemble
# Process JSON, output as YAML
cat config.json | jq '.database' | yq -P
Quand utiliser chaque format
| CritĂšre | JSON | YAML |
|---|---|---|
| Ădition humaine | Plus difficile (crochets, virgules) | Plus facile (syntaxe propre) |
| Parsing machine | Plus rapide | Plus lent |
| Commentaires | Non supportés | Supportés |
| Ăchange de donnĂ©es | Standard (API) | Rare |
| Configuration | Acceptable | Préféré |
| Rigueur | Strict (bien) | Flexible (risqué) |
Utilisez JSON pour : La communication API, le stockage de données, les configurations générées par machine, les environnements navigateur.
Utilisez YAML pour : Les configurations éditées manuellement, Docker Compose, Kubernetes, les pipelines CI/CD, Ansible.
Pour une comparaison plus approfondie, consultez notre article YAML vs JSON.
FAQ
YAML est-il un sur-ensemble de JSON ?
Oui, depuis YAML 1.2 (2009), tout document JSON valide est aussi du YAML valide. Un parseur YAML peut analyser du JSON directement. Cependant, l'inverse n'est pas vrai â les fonctionnalitĂ©s YAML comme les commentaires, les ancres et les chaĂźnes multilignes n'ont pas d'Ă©quivalent JSON.
Lequel est plus rapide Ă analyser, JSON ou YAML ?
JSON est significativement plus rapide à analyser dans pratiquement tous les langages. Les parseurs JSON sont plus simples car le format a moins de syntaxe à gérer. Pour les fichiers de configuration chargés une seule fois au démarrage, la différence est négligeable. Pour le traitement de données à haut débit, JSON est le choix évident.
Ressources connexes
- Convertisseur JSON vers YAML â Convertissez entre les formats instantanĂ©ment
- YAML vs JSON â Comparaison dĂ©taillĂ©e des formats
- Tutoriel syntaxe YAML â Apprenez YAML depuis zĂ©ro