0

我想要通用转换器,以便将任何 Java 对象转换为 Map 并将嵌套对象表示为嵌套 Maps。例如

class MyA {
  String a;
  Integer b;
  MyB c;
  List<MyD> d;
}
class MyB {
  Double a;
  String b;
  MyB c;
}
class MyD {
  Double a;
  String b;
}

转化成:

Map {
  a:anyValue
  b:5
  c:Map {
    c:Map {
      a:asdfValue
      b:5.123    
      c:Map {
        a:fdaValue
        b:3.123
        c:null
      }
    }
  }
  d:Map {
    1:Map {
      a:aValue
      b:5.5
    }
    2:Map {
      a:bValue
      b:5.6
    }
  }
}

请为任何转换框架发布您的解决方案。

4

1 回答 1

1

您实际上可以自己轻松实现:

public Map<String, Object> convertObjectToMap(Object o) throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    for (Field f : o.getClass().getDeclaredFields()) {
        f.setAccessible(true);
        Object value = f.get(o);
        if ((value instanceof Integer) || (value instanceof String) /* other primitives... */)
            map.put(f.getName(), value);
        else if (value instanceof Collection<?>) {
            int listindex = 0;
            for (Object listitem : (Collection<?>)value)
                map.put(f.getName() + "_" + listindex++, listitem);
        }
        else
            map.put(f.getName(), convertObjectToMap(value));
    }
    return map;
}
于 2012-09-05T15:29:29.510 回答