Trabajo con YAML en Java: bibliotecas SnakeYAML y Jackson

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con YAML en Java: bibliotecas SnakeYAML y Jackson



YAML (YAML Ain't Markup Language) es un formato de serialización de datos legible por humanos, utilizado a menudo para archivos de configuración, descripción de APIs e intercambio de datos. En el ecosistema de Java existen varias bibliotecas para trabajar con YAML, pero las más populares son SnakeYAML (analizador de bajo nivel) y Jackson YAML (solución de alto nivel con soporte de anotaciones). En este artículo, analizaremos en detalle ambas bibliotecas, sus capacidades y ejemplos de uso.



1. SnakeYAML — el analizador YAML clásico



SnakeYAML es una biblioteca simple y ligera que proporciona control total sobre el proceso de análisis. Soporta todas las especificaciones de YAML 1.1 y permite trabajar tanto con estructuras simples (Map, List) como con objetos personalizados.



Instalación de SnakeYAML



Si usas Maven, agrega la dependencia en pom.xml:



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


Para Gradle:



implementation 'org.yaml:snakeyaml:2.2'


Ejemplo: análisis de una cadena YAML en un Map



import org.yaml.snakeyaml.Yaml;import java.util.Map;

public class SnakeYamlExample { public static void main(String[] args) { String yamlString = """ server: host: localhost port: 8080 database: url: jdbc:mysql://localhost:3306/mydb user: admin password: secret """;

Yaml yaml = new Yaml(); Map<String, Object> data = yaml.load(yamlString);

System.out.println(data); // Salida: {server={host=localhost, port=8080}, database={url=jdbc:mysql://localhost:3306/mydb, user=admin, password=secret}} }}


Ejemplo: carga de YAML desde un archivo



import org.yaml.snakeyaml.Yaml;import java.io.FileInputStream;import java.io.InputStream;import java.util.Map;

public class SnakeYamlFileExample { public static void main(String[] args) { try (InputStream input = new FileInputStream("config.yaml")) { Yaml yaml = new Yaml(); Map<String, Object> data = yaml.load(input); System.out.println("Puerto: " + ((Map<String, Object>) data.get("server")).get("port")); } catch (Exception e) { e.printStackTrace(); } }}


Ejemplo: serialización de un objeto Java a YAML



import org.yaml.snakeyaml.Yaml;import java.util.Map;

public class SnakeYamlDumpExample { public static void main(String[] args) { Map<String, Object> data = Map.of( "name", "PythonLib", "version", 2.0, "features", List.of("YAML", "JSON", "XML") );

Yaml yaml = new Yaml(); String output = yaml.dump(data); System.out.println(output); // Salida: // features: // - YAML // - JSON // - XML // name: PythonLib // version: 2.0 }}


Ventajas de SnakeYAML:

  • API simple sin dependencias adicionales
  • Soporte de tipos personalizados mediante constructores
  • Configuración flexible del análisis (por ejemplo, ignorar campos desconocidos)


2. Jackson YAML — solución moderna con anotaciones



Jackson YAML es un módulo para la popular biblioteca Jackson que permite trabajar con YAML de la misma manera que con JSON. Soporta anotaciones (@JsonProperty, @JsonIgnore), vinculación automática con POJO y procesamiento en flujo.



Instalación de Jackson YAML



Maven:




                
    
    

Recommendations