import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.cpic.caf.cili.trans.model.PolicInfo;
/**
*
* BEAN、MAP互转工具类<br>
*
* 当把Person类作为BeanToMapUtils的内部类时,程序出错<br>
* java.lang.NoSuchMethodException: Property '**' has no setter method<br>
* 本质:内部类 和 单独文件中的类的区别 <br>
* BeanUtils.populate方法的限制:<br>
* The class must be public, and provide a public constructor that accepts no arguments. <br>
* This allows tools and applications to dynamically create new instances of your bean, <br>
* without necessarily knowing what Java class name will be used ahead of time
*/
public class BeanToMapUtils {
private static Logger log = LoggerFactory.getLogger(BeanToMapUtils.class);
public static void main(String[] args) {
/*PersonBean person = new PersonBean();
Map<String, Object> mp = new HashMap<String, Object>();
mp.put("name", "Mike");
mp.put("age", 25);
mp.put("mN", "male");
// 将map转换为bean
transMap2Bean2(mp, person);
System.out.println("--- transMap2Bean Map Info: ");
for (Map.Entry<String, Object> entry : mp.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println("--- Bean Info: ");
System.out.println("name: " + person.getName());
System.out.println("age: " + person.getAge());
System.out.println("mN: " + person.getmN());*/
}
// Map --> Bean 2: 利用org.apache.commons.beanutils 工具类实现 Map --> Bean
public static void transMap2Bean2(Map<String, Object> map, Object obj) {
if (map == null || obj == null) {
return;
}
try {
BeanUtils.populate(obj, map);
} catch (Exception e) {
log.error("transMap2Bean2 Error ",e);
}
}
// Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean
public static void transMap2Bean(Map<String, Object> map, Object obj) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
// 得到property对应的setter方法
Method setter = property.getWriteMethod();
setter.invoke(obj, value);
}
}
} catch (Exception e) {
log.error("transMap2Bean Error ",e);
}
return;
}
// Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map
public static Map<String, Object> transBean2Map(Object obj) {
if(obj == null){
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
// 过滤class属性
if (!key.equals("class")) {
// 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
} catch (Exception e) {
log.error("transBean2Map Error " ,e);
}
return map;
}
}
相关推荐
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
在Java开发中,JSON(JavaScript Object ...通过这样的工具类,我们可以简化JSON、Map和JavaBean之间的转换过程,提高代码的可读性和可维护性。在实际开发中,了解并熟练掌握这些转换方法对于处理数据交互至关重要。
`collectionUtils`可能是提供这些转换功能的一个工具类,包含了一系列关于集合操作的实用方法,包括`Map`和`JavaBean`的转换。在实际项目中,这样的工具类能帮助开发者提高代码的可读性和可维护性,避免重复编写转换...
将list<Map>转换成JavaBean的工具类
JavaBean和Map以及String与JSON之间的转换在Java开发中是非常常见的操作。这涉及到Java对象的序列化和反序列化,通常用于数据交换或持久化存储。以下是对这些转换的详细解释和示例。 1. JavaBean到JSON JavaBean是...
对象与map互相转换工具类
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后...此工程中就是解决List<Map, Object>>转化为JavaBean工具类实现
Javabean和map相互转化方法代码示例 在 Java 开发中,经常需要将 JavaBean 对象和 Map 对象相互转换。例如,在导入数据时,可能需要将 Map 对象转换为 JavaBean 对象,以便更方便地处理数据。本文将介绍 JavaBean ...
工具类通过反射遍历JavaBean的所有公共属性,如果属性名与Map中的键匹配,就会调用对应的setter方法设置属性值。这样,我们只需要一行代码就能完成JavaBean的初始化,而无需手动写多个setter方法调用。 下面是一个...
基于Java反射的map自动装配JavaBean工具类设计示例代码 标题 :"基于Java反射的map自动装配JavaBean工具类设计示例代码" 在 Java 开发中,经常需要将 Map 对象自动装配到 JavaBean 对象中,例如在使用 MyBatis 时...
在已经有xml的情况下,快速生成javabean代码,不需要自己再手打大量无聊的代码。
于是一怒之下,自己动手丰衣足食,就自己用Swing写了一个通过数据库的表生成JavaBean的工具,支持MySQL、Oracle、SQLServce、PostgreSQL,完美支持JPA注解,可以同时生成Entity和DTO,可以自动去除表前缀,并支持...
`JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`ezmorph`的封装,提供了简洁易用的API供开发者进行JSON操作。可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`...
本文将详细介绍一个将List转换为Map的工具类实例,它使用了JavaBeans和反射机制来实现这一功能。 首先,我们定义一个名为`List2MapUtils`的工具类,该类包含一个静态方法`convert2Map`。这个方法接受三个参数:`...
综上所述,JavaBean2Map是一个实用的工具,通过XML配置驱动的转换引擎,使得在JavaBean和Map之间灵活地进行数据转换成为可能。它的开源性质促进了社区参与和改进,使得这个工具更加健壮和适应各种需求。
java开发中常用的工具类 比如 1:hibernate的配置 工具类复写 2:字符串加密 MD5加密 3:javabean到map的自动映射封装 4:javabean java对象到xml的自动封装 5:各种日期格式的处理 6:json的自动封装处理 7:...
xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...
总结一下,Map和Object互转以及Map和JSON互转是Java Web开发中常见的需求。前者可以通过反射、Apache Commons BeanUtils或者Introspector类来实现,而后者则可以使用专门的JSON处理库如Gson、Jackson或Fastjson。...
5. **使用工具类或方法**:可以创建一个静态方法或者工具类,接收JSON字符串和JavaBean的Class类型作为参数,内部实现转换逻辑,这样在项目中可以复用。 6. **代码示例**:对于Gson库,可以创建一个自定义`...
`commons-beanutils-1.8.0.jar`是Apache Commons BeanUtils的核心库,它提供了一系列实用工具类,帮助开发者处理JavaBean操作。其中,最常用的功能之一就是将Map转换为JavaBean对象,这极大地减少了手动转换的繁琐...