Leggere file YAML in Java con Jackson

Mattepuffo's logo
Leggere file YAML in Java con Jackson

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!


Condividi

Commentami!