public static void unpack(HashMap<String,Object> object,String key,Object value){
  String[] split=key.split("\\.");
  HashMap lobj=object;
  for (int cur=0; cur < split.length; cur++) {
    String current=split[cur];
    if (!(lobj.containsKey(current) && lobj.get(current) instanceof HashMap)) {
      lobj.put(current,new HashMap<String,Object>());
    }
    if (cur == split.length - 1) {
      lobj.put(current,value);
    }
 else     lobj=(HashMap)lobj.get(current);
  }
}

public static void unpack ( HashMap < String , Object > object , String key , Object value ) { String [ ] split = key . split ( "\\." ) ; HashMap lobj = object ; for ( int cur = 0 ; cur < split . length ; cur ++ ) { String current = split [ cur ] ; if ( ! ( lobj . containsKey ( current ) && lobj . get ( current ) instanceof HashMap ) ) { lobj . put ( current , new HashMap < String , Object > ( ) ) ; } if ( cur == split . length - 1 ) { lobj . put ( current , value ) ; } else lobj = ( HashMap ) lobj . get ( current ) ; } }
unpack a period delimited string and get the object at that pointer . i . e test . test2 . test3 translates to test [ " test2 " ] [ " test3 " ]
