How to define a map in a YAML file for simple POJO? How to define a map in a YAML file for simple POJO? java java

How to define a map in a YAML file for simple POJO?


Here is how it can look like:

#MAPkeyMapping:     key1: value1    key2: value2

Generally YAML format has natural support of key-value pairs. Take a look on the following tutorial (just for example): https://github.com/Animosity/CraftIRC/wiki/Complete-idiot's-introduction-to-yaml

Or just google "yaml map" for more details.


Yaml file "AppParams.yml" with key-value pairs:

someConfig:    key1: value1    key2: value2

POJO:

public class ApplicationParameters {    private Map<String, String> someConfig;    public ApplicationParameters() {    }    public Map<String, String> getSomeConfig() {        return someConfig;    }    public void setSomeConfig(Map<String, String> someConfig) {        this.someConfig = someConfig;    }}

Reader:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());File paramFile = new File("AppParams.yml");ApplicationParameters applicationParameters = mapper.readValue(paramFile, ApplicationParameters.class);Map<String, String> someConfig = applicationParameters.getSomeConfig();String key1Value = someConfig.get("key1");    //returns "value1"

The example above uses these dependencies in POM.xml:

 <dependencies>    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-core</artifactId>        <version>2.9.8</version>    </dependency>    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>        <version>2.9.8</version>    </dependency>    <dependency>        <groupId>com.fasterxml.jackson.dataformat</groupId>        <artifactId>jackson-dataformat-yaml</artifactId>        <version>2.9.8</version>    </dependency></dependencies>