Travailler avec YAML en Java : les 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 : les bibliothèques SnakeYAML et Jackson

\n\n

YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme, souvent utilisé pour les fichiers de configuration, la description d'API et l'échange de données. Dans l'écosystème Java, il existe plusieurs bibliothèques pour travailler avec YAML, mais les plus populaires sont SnakeYAML (analyseur de bas niveau) et Jackson YAML (solution de haut niveau avec prise en charge des annotations). Dans cet article, nous examinerons en détail les deux bibliothèques, leurs fonctionnalités et des exemples d'utilisation.

\n\n

1. SnakeYAML — l'analyseur YAML classique

\n\n

SnakeYAML est une bibliothèque simple et légère qui offre un contrôle total sur le processus d'analyse. Elle prend en charge toutes les spécifications YAML 1.1 et permet de travailler aussi bien avec des structures simples (Map, List) qu'avec des objets personnalisés.

\n\n

Installation de SnakeYAML

\n\n

Si vous utilisez Maven, ajoutez la dépendance dans pom.xml :

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

Pour Gradle :

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

Exemple : analyse d'une chaîne YAML en Map

\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        // Sortie : {server={host=localhost, port=8080}, database={url=jdbc:mysql://localhost:3306/mydb, user=admin, password=secret}}\n    }\n}
\n\n

Exemple : chargement d'un YAML depuis un fichier

\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

Exemple : sérialisation d'un objet Java en YAML

\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        // Sortie :\n        // features:\n        // - YAML\n        // - JSON\n        // - XML\n        // name: PythonLib\n        // version: 2.0\n    }\n}
\n\n

Avantages de SnakeYAML :

\n
    \n
  • API simple sans dépendances superflues
  • \n
  • Prise en charge des types personnalisés via des constructeurs
  • \n
  • Configuration flexible de l'analyse (par exemple, ignorer les champs inconnus)
  • \n
\n\n

2. Jackson YAML — une solution moderne avec annotations

\n\n

Jackson YAML est un module pour la bibliothèque populaire Jackson, qui permet de travailler avec YAML de la même manière qu'avec JSON. Il prend en charge les annotations (@JsonProperty, @JsonIgnore), la liaison automatique avec POJO et le traitement par flux.

\n\n

Installation de Jackson YAML

\n\n

Maven :

\n\n

                
    
    

Recommendations