Arbeit mit YAML in Java: Bibliotheken SnakeYAML und Jackson

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit YAML in Java: Überblick über Bibliotheken und Anwendungsbeispiele



YAML (YAML Ain't Markup Language) ist ein Daten serialisierungsformat, das aufgrund seiner Lesbarkeit häufig für Konfigurationsdateien verwendet wird. In Java werden für die Arbeit mit YAML zwei Hauptbibliotheken verwendet: SnakeYAML (leicht, schnell) und Jackson YAML (leistungsstark, mit Unterstützung für Annotationen). In diesem Artikel werden wir beide Bibliotheken im Detail besprechen und Beispiele für das Lesen, Schreiben und die Objektserialisierung zeigen.



1. Die Bibliothek SnakeYAML



SnakeYAML ist die beliebteste Bibliothek für die Arbeit mit YAML in Java. Sie unterstützt die vollständige YAML 1.1-Syntax, einschließlich Tags, Anker und benutzerdefinierter Typen. Die wichtigsten Funktionen sind:

  • Lesen von YAML in Map, List oder benutzerdefinierte Java-Objekte
  • Schreiben von Java-Objekten in YAML
  • Unterstützung für rekursive Strukturen
  • Geringer Speicherverbrauch


Einbinden von SnakeYAML (Maven)

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


Lesen einer YAML-Datei

Betrachten wir ein Beispiel einer YAML-Datei config.yaml:

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


Java-Code zum Lesen:

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("Server host: " + ((Map<String, Object>) data.get("server")).get("host")); } catch (Exception e) { e.printStackTrace(); } }}


Schreiben in 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. Die Bibliothek Jackson YAML



Jackson YAML ist ein Modul für Jackson, das Unterstützung für das YAML-Format hinzufügt. Die Hauptvorteile sind:

  • Vollständige Integration mit Jackson-Annotationen (@JsonProperty, @JsonIgnore)
  • Arbeit mit POJO-Objekten ohne zusätzliche Maps
  • Hohe Leistung durch Stream-Verarbeitung
  • Unterstützung für YAML 1.1 und teilweise 1.2


Einbinden von Jackson YAML (Maven)

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


Serialisierung von POJO in YAML

Erstellen wir eine Klasse für die Konfiguration:

import com.fasterxml.jackson.annotation.JsonProperty;

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

Empfehlungen