Leggere file YAML in Java con Jackson
Jackson è una delle librerie più conosciute ed usate per il parsing di JSON in Java.
Ma in verità questa libreria fa molto di più con le sue estensioni.
Oggi vediamo come usarla per fare il parsing di file in formato YAML!
Se usate Maven aggiungete questo al vostro pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
Partendo da questo file YAML:
---
nome: Mattepuffo
eta: 30
indirizzo:
via: Via degli informatici 100
citta: Roma
zip: 00000
ruoli:
- Sviluppatore
- IT Manager
Prima di tutto creiamo una classe per incapsulare i dati:
import java.util.Map;
public class Persona {
private String nome;
private int eta;
private Map<String, String> indirizzo;
private String[] ruoli;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getEta() {
return eta;
}
public void setEta(int eta) {
this.eta = eta;
}
public Map<String, String> getIndirizzo() {
return indirizzo;
}
public void setIndirizzo(Map<String, String> indirizzo) {
this.indirizzo = indirizzo;
}
public String[] getRuoli() {
return ruoli;
}
public void setRuoli(String[] ruoli) {
this.ruoli = ruoli;
}
}
I campi devono rispettare i nomi dei relativi campi del file YAML.
A questo punto:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
Persona persona = mapper.readValue(
new File("persone.yaml"),
Persona.class
);
System.out.println(persona.getNome());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
Qui stampiamo solo il nome, ma potete richiamare tutti i campi ovviamente.
Enjoy!
java jackson yaml maven
Commentami!