java 实体类Bean与Map互相转化

java

 

1.情景展示

  java对象与Map之间进行相互转换,如何实现?   

2.分析

  通过org.apache.commons.beanutils.BeanUtils类来实现

  所需jar包

<dependency>

<groupId>commons-beanutils</groupId>

<artifactId>commons-beanutils</artifactId>

<version>1.8.0</version>

<scope>compile</scope>

</dependency>  

3.代码实现

  Java对象转Map

/*

* Java对象转Map

* @attention: 实体类的属性必须有对应的get()方法

* @date: 2020年11月20日 0020 10:43

* @param: bean Java对象

* @return: java.util.Map<java.lang.String,java.lang.Object>

*/

public static Map<String, Object> fromJavaBean(Object bean) {

if (null == bean) return null;

try {

Map<String, Object> map = BeanUtils.describe(bean);

// 移除key=class

map.remove("class");

log.debug("JavaBean-->Map转换前:" + bean.toString());

log.debug("JavaBean-->Map转换后:" + map);

return map;

} catch (Exception e) {

log.error("JavaBean-->Map转换失败:" + e.getMessage());

e.printStackTrace();

return null;

}

}

  说明: 首字母大写有可能会存在被强转成小写的可能,比如:X509->x509

  Map转Java对象

/*

* Map转java对象

* @attention: 实体类不能使用lombok注解@Accessors(chain = true),否则将会赋值失败

* 实体类的属性必须有对应的set()方法

* @date: 2020年11月20日 0020 10:53

* @param: clazz java类

* @param: map 待转换

* @return: T

*/

public static <T> T toJavaBean(Class<?> clazz, Map map) {

try {

T newBeanInstance = (T) clazz.newInstance();

BeanUtils.populate(newBeanInstance, map);

log.debug("Map-->JavaBean转换前:" + map);

log.debug("Map-->JavaBean转换后:" + newBeanInstance.toString());

return newBeanInstance;

} catch (Exception e) {

log.error("Map-->JavaBean转换失败:" + e.getMessage());

e.printStackTrace();

return null;

}

}

4.测试    

public static void main(String[] args) {

Map<String, Object> hashMap = new HashMap<>(5);

hashMap.put("name", "Marydon");

hashMap.put("sex", "男");

hashMap.put("age", 18);

hashMap.put("address", "深圳");

hashMap.put("company", "创业");

// map转实体类

People people = MapUtils.toJavaBean(People.class,hashMap);

// 实体类转map

Map map = MapUtils.fromJavaBean(people);

// 打印执行结果

System.out.println(people.toString());

System.out.println(map);

}

 

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

  • 个人主页

 

 

以上是 java 实体类Bean与Map互相转化 的全部内容, 来源链接: utcz.com/z/392393.html

回到顶部