java object互转Map的三种方法
原文:http://www.open-open.com/code/view/1423280939826
/** * 使用org.apache.commons.beanutils进行转换 */
class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); org.apache.commons.beanutils.BeanUtils.populate(obj, map); return obj; } public static Map<?, ?> objectToMap(Object obj) { if(obj == null) return null; return new org.apache.commons.beanutils.BeanMap(obj); } } /** * 使用Introspector进行转换 */
class B { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { Method setter = property.getWriteMethod(); if (setter != null) { setter.invoke(obj, map.get(property.getName())); } } return obj; } public static Map<String, Object> objectToMap(Object obj) throws Exception { if(obj == null) return null; Map<String, Object> map = new HashMap<String, Object>(); BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (key.compareToIgnoreCase("class") == 0) { continue; } Method getter = property.getReadMethod(); Object value = getter!=null ? getter.invoke(obj) : null; map.put(key, value); } return map; } } /** * 使用reflect进行转换 */
class C { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){ continue; } field.setAccessible(true); field.set(obj, map.get(field.getName())); } return obj; } public static Map<String, Object> objectToMap(Object obj) throws Exception { if(obj == null){ return null; } Map<String, Object> map = new HashMap<String, Object>(); Field[] declaredFields = obj.getClass().getDeclaredFields(); for (Field field : declaredFields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } return map; }
}
java object互转Map的三种方法相关推荐
- Java中遍历Set集合的三种方法
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java中遍历Set集合的三种方法(实例代码)
哈喽,欢迎来到小朱课堂,下面开始你的学习吧! Java中遍历Set集合的三种方法 废话不多说,直接上代码 1.迭代遍历: Set set = new HashSet(); Iterator it = ...
- Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)
Java 数组转成集合List 三种方法 package com.list;import java.util.ArrayList; import java.util.Arrays; import ja ...
- java利用实现大数阶乘(三种方法)
java利用实现大数阶乘(三种方法) 法一: for循环 import java.math.BigInteger; import java.util.Scanner; public class das ...
- java中从键盘输入的三种方法以及Console输入
java中从键盘输入的三种方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...
- java List转Map的三种方法(java8语法特性使用)
有时候我们需要将List中的某些属性转为一个map集合,在java8中提供了流式编程函数可以为我们非常方便的达到目的. 目录 1.创建测试类 2.构造测试数据 3.三种方法介绍 (1)第一种: (2) ...
- Java 中Int转String的三种方法
JAVA 中int类型转String类型的三种通常方法: 1.String.valueOf(int i) 2.Integer.toString(int i) 3.i + ""; / ...
- java对象转换String类型的三种方法
**一.采用Object.toString() **toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象 ...
- java遍历map_java遍历Map的几种方法
**public static void main(String[] args) { Map map = new HashMap(); map.put("1", "val ...
最新文章
- 从单张图像学习双目图像
- jenkins安装与配置---window,mis包直接安装
- python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...
- 1、SELECT:数据表查询语句
- [云炬创业基础笔记]第十一章创业计划书测试14
- c语言向自定数组_数据结构之用C语言实现定义数组
- 错误:不能继续进行下一步操作 openfire 设置._如何为MacBook或Mac电脑恢复出厂设置...
- c语言在win8系统不兼容,Win8系统中存在不兼容软件如何解决?
- Hugo中文文档 快速开始
- 云和恩墨吴涵文:开源将加速成为中国未来发展基础软硬件技术的关键路径
- c++ 覆盖、重载与隐藏
- java连接数据库配置文件
- windows更新安装时出现此更新不适用于你的计算机的解决办法 dos 安装 msu
- data后缀文件解码_对任何格式的文件实现加密与解密软件
- excel下拉列表多选框_将列表框添加到Excel工作表
- TensorFlow RunTime(TFRT) 小试
- 解决【react-native init awesomeproject没反应】
- php项目宝塔搭建实战前后端Niushop开源商城系统
- 存算一体芯片技术及其最新发展趋势(陈巍谈芯)
- tf.extract_image_patches以及pytorch的extract_patches