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: US
Note : 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";