Below
statements convert the yaml string to a map.
ObjectMapper
mapper = new ObjectMapper(new YAMLFactory());
TypeFactory
typeFactory = mapper.getTypeFactory();
MapType
mapType = typeFactory.constructMapType(HashMap.class, Interger.class,
Employee.class);
Map<String,
Employee> map = mapper.readValue(yaml, mapType);
Find
the below working application.
package com.sample.model; public class Employee { private int id; private String firstName; private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } }
YAMLUtil.java
package com.sample.util; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.CollectionType; import com.fasterxml.jackson.databind.type.MapType; import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; public class YAMLUtil { private static ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); public static void printYAML(Object obj) throws JsonGenerationException, JsonMappingException, IOException { mapper.writeValue(System.out, obj); } public static String getYAML(Object obj) throws JsonProcessingException { return mapper.writeValueAsString(obj); } public static <T> T getObject(String yaml, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException { return mapper.readValue(yaml, clazz); } public static <T> List<T> getListOfObjects(String yaml, Class<T> clazz) throws JsonParseException, JsonMappingException, IOException { CollectionType listType = mapper.getTypeFactory().constructCollectionType(ArrayList.class, clazz); List<T> listOfObjects = mapper.readValue(yaml, listType); return listOfObjects; } public static <K, V> Map<K, V> getMapOfObjects(String yaml, Class<K> keyClazz, Class<V> valueClazz) throws JsonParseException, JsonMappingException, IOException { TypeFactory typeFactory = mapper.getTypeFactory(); MapType mapType = typeFactory.constructMapType(HashMap.class, keyClazz, valueClazz); return mapper.readValue(yaml, mapType); } }
Test.java
package com.sample.app; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.sample.model.Employee; import com.sample.util.YAMLUtil; public class Test { public static void main(String args[]) throws IOException { Map<Integer, Employee> map = new HashMap<>(); Employee emp1 = new Employee(); emp1.setId(1); emp1.setFirstName("Krishna"); emp1.setLastName("Gurram"); Employee emp2 = new Employee(); emp2.setId(2); emp2.setFirstName("Rama"); emp2.setLastName("Gm"); map.put(emp1.getId(), emp1); map.put(emp2.getId(), emp2); System.out.println("Converting map to yaml"); String yaml = YAMLUtil.getYAML(map); System.out.println(yaml); System.out.println("Converting yaml to map"); Map<Integer, Employee> result = YAMLUtil.getMapOfObjects(yaml, Integer.class, Employee.class); for (Integer key : result.keySet()) { Employee emp = result.get(key); System.out.println("id : " + emp.getId()); System.out.println("first name : " + emp.getFirstName()); System.out.println("last name : " + emp.getLastName() + "\n"); } } }
Output
Converting map to yaml --- 1: id: 1 firstName: "Krishna" lastName: "Gurram" 2: id: 2 firstName: "Rama" lastName: "Gm" Converting yaml to map id : 1 first name : Krishna last name : Gurram id : 2 first name : Rama last name : Gm
No comments:
Post a Comment