YAML to POJO mapping


What's inside this article ⌄
  • Jackson YAML to POJO conversion
  • Jackson YAML deserialize java
  • How to map YAML to Java objects
  • Jackson YAML object mapping

application.yaml:

title: "my awesome conf"
childConfiguration:
  message: "hello world"

pom.xml:

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-yaml</artifactId>
  <version>${jackson.version}</version>
</dependency>

RootConfiguration.java:

 1public class RootConfiguration {
 2
 3    private ChildConfiguration childConfiguration;
 4    
 5    private String title;
 6
 7    public ChildConfiguration getChildConfiguration() {
 8        return childConfiguration;
 9    }
10
11    public void setChildConfiguration(ChildConfiguration childConfiguration) {
12        this.childConfiguration = childConfiguration;
13    }
14    
15    public String getTitle() {
16        return title;
17    }
18
19    public void setTitle(String title) {
20        this.title = title;
21    }
22
23    @Override
24    public String toString() {
25        return "RootConfiguration{" +
26                "childConfiguration=" + childConfiguration +
27                '}';
28    }
29}

ChildConfiguration.java:

public class ChildConfiguration {

    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String toString() {
        return "ChildConfiguration{" +
                "message=" + message +
                '}';
    }
}

And the mapping:

public RootConfiguration getConfiguration() throws IOException {
    ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
    File configFile = new File("configuration.yml");
    Preconditions.checkArgument(configFile.exists(), "configuration file doesn't exist");
    return yamlMapper.readValue(configFile, RootConfiguration.class);
}

If you got MismatchedInputException:

com.fasterxml.jackson.databind.exc.MismatchedInputException

Then visit this link.