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: bibliotecas SnakeYAML e Jackson



YAML (YAML Ain't Markup Language) é um formato de serialização de dados legível por humanos, frequentemente usado para arquivos de configuração, descrição de APIs e troca de dados. No ecossistema Java, existem várias bibliotecas para trabalhar com YAML, mas as mais populares são SnakeYAML (parser de baixo nível) e Jackson YAML (solução de alto nível com suporte a anotações). Neste artigo, abordaremos detalhadamente ambas as bibliotecas, seus recursos e exemplos de uso.



1. SnakeYAML — parser YAML clássico



SnakeYAML é uma biblioteca simples e leve que oferece controle total sobre o processo de parsing. Ela suporta todas as especificações do YAML 1.1 e permite trabalhar tanto com estruturas simples (Map, List) quanto com objetos personalizados.



Instalação do SnakeYAML



Se você usa Maven, adicione a dependência no pom.xml:



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


Para Gradle:



implementation 'org.yaml:snakeyaml:2.2'


Exemplo: parsing de string YAML em 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); // Saída: {server={host=localhost, port=8080}, database={url=jdbc:mysql://localhost:3306/mydb, user=admin, password=secret}} }}


Exemplo: carregar YAML de um arquivo



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("Porta: " + ((Map<String, Object>) data.get("server")).get("port")); } catch (Exception e) { e.printStackTrace(); } }}


Exemplo: serialização de objeto Java em 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); // Saída: // features: // - YAML // - JSON // - XML // name: PythonLib // version: 2.0 }}


Vantagens do SnakeYAML:

  • API simples sem dependências desnecessárias
  • Suporte a tipos personalizados através de construtores
  • Configuração flexível de parsing (por exemplo, ignorar campos desconhecidos)


2. Jackson YAML — solução moderna com anotações



Jackson YAML é um módulo para a popular biblioteca Jackson que permite trabalhar com YAML da mesma forma que com JSON. Ele suporta anotações (@JsonProperty, @JsonIgnore), vinculação automática com POJO e processamento em fluxo.



Instalação do Jackson YAML



Maven:




                
    
    

Recommendations