public static Map<String, Object> javabeanToMap(Object bean) {
Map<String, Object> result = new HashMap<String, Object>();
if (bean == null) {
return result;
}
Field[] fields = bean.getClass().getDeclaredFields();
if (fields == null || fields.length == 0) {
return result;
}
for (Field field : fields) {
// 重置属性可见(而且一般属性都是私有的),否则操作无效
boolean accessible = field.isAccessible();
if (!accessible) {
field.setAccessible(true);
}
String key = field.getName();
try {
// 获取子类属性
Object value = field.get(bean);
if (value instanceof java.util.List) {
List list = (List) value;
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
Object obj;
for (int i = 0; i < list.size(); i++) {
obj = list.get(i);
// list里是map或String,不会存在list里直接是list的,
Field[] fieldChilds = obj.getClass().getDeclaredFields();
Map<String, Object> resultChild = new HashMap<String, Object>();
for (Field field2 : fieldChilds) {
// 重置属性可见(而且一般属性都是私有的),否则操作无效
boolean accessible2 = field2.isAccessible();
if (!accessible2) {
field2.setAccessible(true);
}
try {
// 获取属性名称及值存入Map
String key1 = field2.getName();
Object ooo = field2.get(obj);
System.out.println("==key " + key1 + ";;;;;" + ooo);
resultChild.put(key1, field2.get(obj));
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (IllegalAccessException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
// 还原属性标识
field.setAccessible(accessible2);
}
mapList.add(resultChild);
}
result.put(key, mapList);
} else {
result.put(key, field.get(bean));
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// 还原属性标识
field.setAccessible(accessible);
}
// 获取父类属性
fields = bean.getClass().getSuperclass().getDeclaredFields();
if (fields == null || fields.length == 0) {
return result;
}
for (Field field : fields) {
// 重置属性可见(而且一般属性都是私有的),否则操作无效
boolean accessible = field.isAccessible();
if (!accessible) {
field.setAccessible(true);
}
// 获取属性名称及值存入Map
String key = field.getName();
try {
result.put(key, field.get(bean));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// 还原属性标识
field.setAccessible(accessible);
}
return result;
}
java bean中包含list<object>转map方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- org.springframework.beans.factory.UnsatisfiedDependencyEx...
- 前言:java的集合框架细节阐述我们这里就不赘述了,可参考Java - 集合框架完全解析,这里只总结java集合的...
- 文章来源于自己实际开发项目中遭遇到的一个问题。在一开始,我定义了一个 这并没有说明问题,然后开始往下写了一堆函数,...