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: Bibliotheken SnakeYAML und Jackson

\n\n

YAML (YAML Ain't Markup Language) ist ein menschenlesbares Daten-Serialisierungsformat, das häufig für Konfigurationsdateien, API-Beschreibungen und Datenaustausch verwendet wird. Im Java-Ökosystem gibt es mehrere Bibliotheken für die Arbeit mit YAML, aber die bekanntesten sind SnakeYAML (Low-Level-Parser) und Jackson YAML (High-Level-Lösung mit Annotation-Unterstützung). In diesem Artikel werden wir beide Bibliotheken, ihre Funktionen und Anwendungsbeispiele im Detail betrachten.

\n\n

1. SnakeYAML – klassischer YAML-Parser

\n\n

SnakeYAML ist eine einfache und leichtgewichtige Bibliothek, die volle Kontrolle über den Parsing-Prozess bietet. Sie unterstützt alle YAML 1.1-Spezifikationen und ermöglicht die Arbeit sowohl mit einfachen Strukturen (Map, List) als auch mit benutzerdefinierten Objekten.

\n\n

Installation von SnakeYAML

\n\n

Wenn Sie Maven verwenden, fügen Sie die Abhängigkeit in pom.xml hinzu:

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

Für Gradle:

\n\n
implementation 'org.yaml:snakeyaml:2.2'
\n\n

Beispiel: YAML-String in Map parsen

\n\n
import org.yaml.snakeyaml.Yaml;\nimport java.util.Map;\n\npublic class SnakeYamlExample {\n    public static void main(String[] args) {\n        String yamlString = """\n            server:\n              host: localhost\n              port: 8080\n            database:\n              url: jdbc:mysql://localhost:3306/mydb\n              user: admin\n              password: secret\n            """;\n\n        Yaml yaml = new Yaml();\n        Map<String, Object> data = yaml.load(yamlString);\n\n        System.out.println(data);\n        // Ausgabe: {server={host=localhost, port=8080}, database={url=jdbc:mysql://localhost:3306/mydb, user=admin, password=secret}}\n    }\n}
\n\n

Beispiel: YAML aus Datei laden

\n\n
import org.yaml.snakeyaml.Yaml;\nimport java.io.FileInputStream;\nimport java.io.InputStream;\nimport java.util.Map;\n\npublic class SnakeYamlFileExample {\n    public static void main(String[] args) {\n        try (InputStream input = new FileInputStream("config.yaml")) {\n            Yaml yaml = new Yaml();\n            Map<String, Object> data = yaml.load(input);\n            System.out.println("Port: " + ((Map<String, Object>) data.get("server")).get("port"));\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}
\n\n

Beispiel: Java-Objekt in YAML serialisieren

\n\n
import org.yaml.snakeyaml.Yaml;\nimport java.util.Map;\n\npublic class SnakeYamlDumpExample {\n    public static void main(String[] args) {\n        Map<String, Object> data = Map.of(\n            "name", "PythonLib",\n            "version", 2.0,\n            "features", List.of("YAML", "JSON", "XML")\n        );\n\n        Yaml yaml = new Yaml();\n        String output = yaml.dump(data);\n        System.out.println(output);\n        // Ausgabe:\n        // features:\n        // - YAML\n        // - JSON\n        // - XML\n        // name: PythonLib\n        // version: 2.0\n    }\n}
\n\n

Vorteile von SnakeYAML:

\n
    \n
  • Einfache API ohne überflüssige Abhängigkeiten
  • \n
  • Unterstützung benutzerdefinierter Typen über Konstruktoren
  • \n
  • Flexible Parsing-Konfiguration (z. B. Ignorieren unbekannter Felder)
  • \n
\n\n

2. Jackson YAML – moderne Lösung mit Annotationen

\n\n

Jackson YAML ist ein Modul für die beliebte Jackson-Bibliothek, das die Arbeit mit YAML genauso wie mit JSON ermöglicht. Es unterstützt Annotationen (@JsonProperty, @JsonIgnore), automatische Bindung an POJOs und Streaming-Verarbeitung.

\n\n

Installation von Jackson YAML

\n\n

Maven:

\n\n

                
    
    

Empfehlungen