YAML peut être vu comme une extension de json : tout document json valide est un document yaml valide (le contraire n'est pas vrai).
Un des intérêts de yaml est de supporter 2 modes : un mode "inline", comme json et un mode "multiligne" utilisant les tabulations pour exprimer la structure des objets, ce qui permet d'écrire des fichiers de configuration sans caractères tels que
[ ] { } " ,
.
Exemple d'un tableau contenant 2 maps en json :
[ { "nom": "Curry", "pr\u00e9nom": "Haskell Brooks", "naissance": { "date": "1900-12-09", "lieu": "Millis", "admin-code-level1": "Massachusetts", "pays": "US" }, "mort": { "date": "1982-12-01", "lieu": "State College", "admin-code-level1": "Pennsylvania", "pays": "US" } }, { "nom": "Howard", "pr\u00e9nom": "William Alvin", "naissance": { "date": "1926", "pays": "US" } } ]Le même tableau écrit en yaml, mode multiline :
- nom: Curry "pr\xE9nom": Haskell Brooks naissance: date: "1900-12-09" lieu: Millis admin-code-level1: Massachusetts pays: US mort: date: "1982-12-01" lieu: State College admin-code-level1: Pennsylvania pays: US - nom: Howard "pr\xE9nom": William Alvin naissance: date: "1926" pays: USNote : on peut mélanger les 2 syntaxes, par exemple écrire :
- nom: Howard "pr\xE9nom": William Alvin naissance: {date: "1926", pays: US}
Tester l'utilisation de YAML
Créez un répertoire de test et allez dedans :mkdir test-yaml cd test-yamlCréez un fichier
test.yml
contenant le yaml d'exemple.
YAML en java
L'API java ne fournit pas de classes pour gérer le yaml. Il faut donc utiliser une bibliothèque ; il en existe plusieurs, par exemple SnakeYAML, eo-yaml, YamlBeans.On va utiliser YamlBeans.
Installation
Téléchargez sur votre machine locale le jar contenant le code de YamlBeans, à partir de https://repo1.maven.org/maven2/com/esotericsoftware/yamlbeans/yamlbeans.wget https://repo1.maven.org/maven2/com/esotericsoftware/yamlbeans/yamlbeans/1.15/yamlbeans-1.15.jarCréez un fichier
YamlTest.java
import java.util.*; import java.io.*; import com.esotericsoftware.yamlbeans.*; class YamlTest{ public static void main(String[] args){ try{ YamlReader reader = new YamlReader(new FileReader("test.yml")); List theList = (ArrayList)reader.read(); System.out.println(theList); } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); System.exit(0); } } }Compilez :
javac -cp yamlbeans-1.15.jar YamlTest.javaExécutez :
java -cp yamlbeans-1.15.jar:. YamlTestAttention, java étant un langage typé, il faut associer à chaque noeud un type java.
Note : A la place de télécharger un fichier jar, on aurait pu cloner le code source et l'utiliser pour compiler et exécuter :
git clone https://github.com/EsotericSoftware/yamlbeans.git javac -cp yamlbeans/src YamlTest.java java -cp yamlbeans/src:. YamlTest
YAML en php
Installer l'extension yaml de php :sudo apt install php8.0-yaml
<?php $yaml = yaml_parse_file('test.yml'); echo "\n"; print_r($yaml); echo "\n";