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>