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,Listou 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: secretCó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() { Também na biblioteca
Autorização e autenticação em PHP: guia completo com exemplos
Trabalhando com CSV em Rust: biblioteca csv e exemplos práticos
Validação de dados em Kotlin: bibliotecas e abordagens (Kotlin, Java)