我想要通用变换器,因此任何Java对象都会转换为Map,嵌套对象则表示为嵌套映射。 E.g。
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
}
}
}
请为任何转型框架发布您的解决方案。
答案 0 :(得分: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;
}