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,Listou 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: secretCode 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() { Aussi dans la bibliothèque
Travailler avec Kafka en Rust : bibliothèques et exemples pour débutants
Parsing HTML en PHP : DOMDocument, SimpleXML et cURL pour le web scraping
Client Elasticsearch pour PHP : elasticsearch-php. Guide complet
Génération de rapports PDF en Swift : PDFKit et UIPrintPageRenderer