Travailler avec YAML en Java : bibliothèques SnakeYAML et Jackson

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec YAML en Java : aperçu des bibliothèques et exemples d'utilisation



YAML (YAML Ain't Markup Language) est un format de sérialisation de données souvent utilisé pour les fichiers de configuration grâce à sa lisibilité. En Java, deux bibliothèques principales sont utilisées pour travailler avec YAML : SnakeYAML (légère, rapide) et Jackson YAML (puissante, avec prise en charge des annotations). Dans cet article, nous allons détailler ces deux bibliothèques, montrer des exemples de lecture, d'écriture et de sérialisation d'objets.



1. Bibliothèque SnakeYAML



SnakeYAML est la bibliothèque la plus populaire pour travailler avec YAML en Java. Elle prend en charge la syntaxe complète de YAML 1.1, y compris les balises, les ancres et les types personnalisés. Principales fonctionnalités :

  • Lecture de YAML dans des Map, List ou des objets Java personnalisés
  • Écriture d'objets Java en YAML
  • Prise en charge des structures récursives
  • Faible consommation mémoire


Intégration de SnakeYAML (Maven)

<dependency>    <groupId>org.yaml</groupId>    <artifactId>snakeyaml</artifactId>    <version>2.2</version></dependency>


Lecture d'un fichier YAML

Considérons l'exemple de fichier YAML config.yaml :

server:  host: localhost  port: 8080database:  url: jdbc:mysql://localhost:3306/mydb  user: admin  password: secret


Code Java pour la lecture :

import org.yaml.snakeyaml.Yaml;import java.io.InputStream;import java.util.Map;

public class SnakeYamlReader { public static void main(String[] args) { Yaml yaml = new Yaml(); try (InputStream in = SnakeYamlReader.class .getClassLoader() .getResourceAsStream("config.yaml")) { Map<String, Object> data = yaml.load(in); System.out.println("Hôte du serveur : " + ((Map<String, Object>) data.get("server")).get("host")); } catch (Exception e) { e.printStackTrace(); } }}


Écriture en YAML

import org.yaml.snakeyaml.Yaml;import java.util.Map;import java.util.LinkedHashMap;

public class SnakeYamlWriter { public static void main(String[] args) { Map<String, Object> data = new LinkedHashMap<>(); Map<String, Object> server = new LinkedHashMap<>(); server.put("host", "127.0.0.1"); server.put("port", 9090); data.put("server", server);

Yaml yaml = new Yaml(); String output = yaml.dump(data); System.out.println(output); }}


2. Bibliothèque Jackson YAML



Jackson YAML est un module pour Jackson qui ajoute la prise en charge du format YAML. Principaux avantages :

  • Intégration complète avec les annotations Jackson (@JsonProperty, @JsonIgnore)
  • Utilisation d'objets POJO sans Map supplémentaires
  • Haute performance grâce au traitement par flux
  • Prise en charge de YAML 1.1 et partiellement 1.2


Intégration de Jackson YAML (Maven)

<dependency>    <groupId>com.fasterxml.jackson.dataformat</groupId>    <artifactId>jackson-dataformat-yaml</artifactId>    <version>2.16.1</version></dependency>


Sérialisation d'un POJO en YAML

Créons une classe pour la configuration :

import com.fasterxml.jackson.annotation.JsonProperty;

public class AppConfig { @JsonProperty("server") private ServerConfig server; @JsonProperty("database") private DatabaseConfig database; // getters et setters public ServerConfig getServer() { return server; } public void setServer(ServerConfig server) { this.server = server; } public DatabaseConfig getDatabase() {

Recommendations