Below
statements convert yaml to list of employees.
ObjectMapper mapper =
new ObjectMapper(new YAMLFactory());
CollectionType
listType = mapper.getTypeFactory().constructCollectionType(ArrayList.class,
clazz);
List<T>
listOfObjects= mapper.readValue(yaml, listType);
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.Arrays; import java.util.List; import com.sample.model.Employee; import com.sample.util.YAMLUtil; public class Test { public static void main(String args[]) throws IOException { Employee emp1 = new Employee(); emp1.setFirstName("Krishna"); emp1.setLastName("Gurram"); emp1.setId(1); Employee emp2 = new Employee(); emp2.setFirstName("Sailu"); emp2.setLastName("N"); emp2.setId(2); List<Employee> emps = Arrays.asList(emp1, emp2); String yaml = YAMLUtil.getYAML(emps); System.out.println("Yaml data of emps is : " + yaml); List<Employee> employees = YAMLUtil.getListOfObjects(yaml, Employee.class); System.out.println("\n\nData after deserialization"); for (Employee emp : employees) { System.out.println("id : " + emp.getId()); System.out.println("first name : " + emp.getFirstName()); System.out.println("last name : " + emp.getLastName() + "\n"); } } }
Output
Yaml data of emps is : --- - id: 1 firstName: "Krishna" lastName: "Gurram" - id: 2 firstName: "Sailu" lastName: "N" Data after deserialization id : 1 first name : Krishna last name : Gurram id : 2 first name : Sailu last name : N
No comments:
Post a Comment