Java bean转换map

/**

*

* @Title: convertMap

* @Description: 使用泛型Map转bean

* 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法。

* 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名

* 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致,

* 就将map的value插入bean中(前提是类型必须是一致,否则报错)

* @param @param <T>

* @param @param map

* @param @param tc

* @param @return

* @param @throws IllegalArgumentException

* @param @throws IllegalAccessException

* @param @throws InvocationTargetException

* @param @throws SecurityException

* @param @throws NoSuchMethodException

* @param @throws InstantiationException 设定参数

* @return T 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static <T> T  convertMap(Map map, Class<T> tc) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, InstantiationException{

T t = tc.newInstance();

Iterator it=map.entrySet().iterator();

Method [] methods=tc.getDeclaredMethods();

while(it.hasNext()){

Map.Entry entry=(Map.Entry)it.next();

String methodName="set"+BeantoMap.fristToUpperCase(entry.getKey().toString());

for(Method method:methods){

if(method.getName().equals(methodName)){

Object value=entry.getValue();

method.invoke(t, value);

break;

}

}

}

return t;

}

/**

*

* @Title: fristToUpperCase

* @Description: 首字母变大写

* @param @param str

* @param @return 设定参数

* @return String 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static String fristToUpperCase(String str){

str=str.substring(0,1).toUpperCase()+str.substring(1,str.length());

return str;

}

/**

*

* @Title: fristToUpperCase

* @Description: 首字母变小写

* @param @param str

* @param @return 设定参数

* @return String 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static String fristToLowerCase(String str){

str=str.substring(0,1).toLowerCase()+str.substring(1,str.length());

return str;

}

/**

*

* @Title: convertBean

* @Description: 实体bean转成Map

* 遍历对象所有方法

* 获取实体bean中get的方法,使用反射的获取方法返回值,如果值不为空,就为map的value,

* 然后把get方法去除get的部分,首字母变小写,为map的key

* @param @param obj

* @param @return

* @param @throws IllegalArgumentException

* @param @throws IllegalAccessException

* @param @throws InvocationTargetException 设定参数

* @return Map 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static Map convertBean(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{

Class cla=obj.getClass();

Method [] methods=cla.getDeclaredMethods();

Map map =new HashMap();

for(Method method: methods){

if(method.getName().startsWith("get")){

String name=method.getName().substring(3,method.getName().length());

String key =BeantoMap.fristToLowerCase(name);

Object value = method.invoke(obj);

if(null!=value)map.put(key, value);

}

}

return map;

}

时间: 2025-01-12 04:18:32

Java bean转换map的相关文章

Java bean 转 Map

Java bean 转 Map 时需要使用Fastjson //方法 一 Map<String, Object> a = (Map<String, Object>)JSON.toJSON(javabean) //方法 二 Map<String, Object> a = JSON.parseObject(JSON.toJSONString(javabean)) 另外也可以使用 使用 BeanUtils Map beanMap = BeanUtils.describe(ja

Java Bean与Map之间相互转化的实现

目录树概述Apache BeanUtils将Bean转MapApache BeanUtils将Map转Bean理解BeanUtils将Bean转Map的实现之手写Bean转Map 概述 Apache的BeanUtils Bean工具类很强大,基本涵盖了Bean操作的所有方法.这里的话我们就讲讲两个方面,一是Bean covert to Map,二是Map covert to Bean:Bean转Map其实利用的是Java的动态性-Reflection技术,不管是什么Bean通过动态解析都是可以转

java bean 转换工具

考量要素: 1.简单的约定优于配置的同名属性copy 2.嵌套属性copy 3.flattern(扁平化)支持,要支持N层结构的copy到一层结构. 4.性能 如下这个网页,里面提到了好多工具. http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping 注意到许多工具采用静态化的生成java字节码的方式,这样和hardcode性能所差无几了. id 描述 是否支持flattern 最

java bean、List、数组、map和Json的相互转化

工程 json包为  代码 package com.my.json; public class ChildBean { private String childName; private String childSex; private int childAge; public ChildBean() { } public ChildBean(String childName, String childSex, int childAge) { this.childName = childName

cxf处理java bean及List、Map类型

项目中经常是处理复合类型比如集合List.Map,下面就cxf处理复合类型进行讲解. 具体例子如下: 这里实例是客户端传一个JavaBean,服务器端返回集合类型: 一.  接口返回List处理: 在原来的项目实例(cxf开发webService服务端口)基础上,我们先创建一个实体类User: 1 /** 2 * 3 */ 4 package com.hik.entity; 5 6 /** 7 * @ClassName: User 8 * @Description: 用户实体类 9 * @aut

JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换工具类(调优)

原文链接:http://blog.csdn.net/qq7342272/article/details/6830907#comments 调试时出现bug,在String中包含list嵌套或map嵌套时会出现字符串下标越界异常,原因是split分割时会出现""字符串,此时引用str.charAt(0)会抛出该异常,如图: 优化代码,经调试暂时解决String中2层嵌套list转换,如下: 1 package test; 2 3 import java.util.ArrayList; 4

fastJson java后台转换json格式数据

什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等

一个强大易用的java bean之间属性复制框架--Dozer介绍

Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to another. Typically, these Java Beans will be of different complex types. 更多内容见:http://dozer.sourceforge.net/documentation/about.html 两个简单示例: map --> bean假设由reque

Java中的Map List Set等集合类

Map List Set等集合类: 一.概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 --java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合.列表) │├ ArreyList     (Class 数组,随机访问,没有同步,线程不安全) │├ Vector        (Class  数组                   同步        线程全) │