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,Listoder 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: secretJava-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() { Auch in der Bibliothek
Autorisierung und Authentifizierung in C++: Bibliotheken und praktische Beispiele
Arbeiten mit ZIP-Archiven in Java: Vollständige Anleitung zu java.util.zip
fx für Go: vollständiges Tutorial mit Beispielen
ExcelJS für JavaScript (Node.js): Komplette Anleitung mit Beispielen