I am trying to write object that have normal key-value pairs as well as key-value(map) i.e. key with map as values.
myobject = {param3={key1=key1-value1, key2=key2-value2}, param1=value1, param2=value2}
here object have param1,param2 values as string and param3 value as another map.
So how to convert it properly map and then write to file ?
Object songObj = (Object) executionContext.getBeanContext().getBean("myobject");
// myobject = {param1=value1, param2=value2,param3={key1=key1-value1, key2=key2-value2}}
HashMap mp = (HashMap) getMapTest1(songObj);
// HashMap mp = (HashMap) getMapTest2(songObj);
this.write(mp);
public static Map<String, Object> getMapTest1(Object obj) {
ObjectMapper m = new ObjectMapper();
Map<String, Object> props = m.convertValue(obj, Map.class);
return props;
}
public static Map<String, Object> getMapTest2(Object obj) throws JsonParseException, IOException{
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = new JsonFactory();
JsonParser json = factory.createParser(obj.toString());
TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String, Object>>() {};
Map<String, Object> map = mapper.readValue(json, typeReference);
System.out.println(map);
return map;
}
public void write(HashMap mp) throws IOException {
// TODO Auto-generated method stub
Writer nodeWriter = writer;
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
if (pair != null) {
nodeWriter.write(pair.getValue().toString());
}
nodeWriter.write(",");
}
writer.flush();
}
output should be writen in file as...
------------------------------------
value1,value2
key1-value1,key2-value2