Trabalhando com YAML em Java: bibliotecas SnakeYAML e Jackson

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com YAML em Java: visão geral das bibliotecas e exemplos de uso



YAML (YAML Ain't Markup Language) é um formato de serialização de dados frequentemente usado para arquivos de configuração devido à sua legibilidade. Em Java, duas bibliotecas principais são usadas para trabalhar com YAML: SnakeYAML (leve, rápida) e Jackson YAML (poderosa, com suporte a anotações). Neste artigo, abordaremos ambas as bibliotecas em detalhes, mostrando exemplos de leitura, escrita e serialização de objetos.



1. Biblioteca SnakeYAML



SnakeYAML é a biblioteca mais popular para trabalhar com YAML em Java. Ela suporta a sintaxe completa do YAML 1.1, incluindo tags, âncoras e tipos personalizados. Principais recursos:

  • Leitura de YAML em Map, List ou objetos Java personalizados
  • Escrita de objetos Java em YAML
  • Suporte a estruturas recursivas
  • Baixo consumo de memória


Adicionando SnakeYAML (Maven)

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


Lendo um arquivo YAML

Vamos considerar um exemplo de arquivo YAML config.yaml:

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


Código Java para leitura:

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(); } }}


Escrevendo em 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. Biblioteca Jackson YAML



Jackson YAML é um módulo para Jackson que adiciona suporte ao formato YAML. Principais vantagens:

  • Integração completa com as anotações do Jackson (@JsonProperty, @JsonIgnore)
  • Trabalho com objetos POJO sem Map adicionais
  • Alta performance devido ao processamento em fluxo
  • Suporte a YAML 1.1 e parcialmente 1.2


Adicionando Jackson YAML (Maven)

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


Serializando POJO em YAML

Vamos criar uma classe para configuração:

import com.fasterxml.jackson.annotation.JsonProperty;

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

Recommendations