JavaBean与Map的相互转换
package com.bizvane.utils.tools;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import org.springframework.util.StringUtils;
public class BeanUtils extends org.apache.commons.beanutils.BeanUtils
{
private static final Logger logger = Logger.getLogger(BeanUtils.class);
private static final String EXCLUDE_UID = "serialVersionUID";
/**
* 类转换为map
* @param bean
* @param isExcludeUid 是否排除序列化
* @param isExcludeNullOrEmpty 是否排除空或者null值
* @param isAsc 是否ascii排序
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> beanToMap(Object bean,
boolean isExcludeUid, boolean isExcludeNullOrEmpty, boolean isAsc)
{
if (null == bean)
{
return null;
}
Map<String, Object> result = new HashMap<String, Object>();
try
{
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field : fields)
{
//解除访问权限
field.setAccessible(true);
String key = field.getName();//属性名
//排除序列化产生的serialVersionUID
if (isExcludeUid && !StringUtils.isEmpty(key)
&& EXCLUDE_UID.equals(key))
{
continue;
}
Object value = field.get(bean);//值
//排除值为空的字段
if (isExcludeNullOrEmpty && null == value)
{
continue;
}
result.put(key, value);
if (isAsc)
{
result = ascSort(result);
}
}
}
catch (Exception e)
{
e.printStackTrace();
logger.error("bean转换map出错");
}
return result;
}
/**
* 对map进行ascII排序
*
* @param map
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> ascSort(Map<String, Object> map)
{
Map<String, Object> result = new LinkedHashMap<String, Object>();
Set<String> keySet = map.keySet();
String[] array = keySet.toArray(new String[keySet.size()]);
Arrays.sort(array, String.CASE_INSENSITIVE_ORDER);
for (String key : array)
{
result.put(key, map.get(key));
}
return result;
}
/**
* 类转换为map
* 默认排除UID属性
* 默认不排除为null值
* @param bean
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> beanToMap(Object bean)
{
return beanToMap(bean, true, false, false);
}
/**
* map转换bean
*
* @param map
* @param clazz
* @return 【参数说明】
*
* @return T 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static <T> T mapToBean(Map<String, Object> map, Class<T> clazz)
{
T bean = null;
try
{
bean = clazz.newInstance();
Field[] fields = clazz.getDeclaredFields();//获取属性集合
//Method[] methods = clazz.getMethods();//获取所有方法
for (Field field : fields)
{
field.setAccessible(true);
String key = field.getName();
//排除序列化产生的serialVersionUID
if (!StringUtils.isEmpty(key) && EXCLUDE_UID.equals(key))
{
continue;
}
Object value = map.get(key);
field.set(bean, value);
}
}
catch (Exception e)
{
e.printStackTrace();
logger.error("map转换bean出错");
}
return bean;
}
public static void main(String[] args)
{
}
}
JavaBean与Map的相互转换的更多相关文章
- JavaBean和Map的相互转换
JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...
- JavaBean和Map转换封装类
package com.ljq.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans. ...
- javaBean与Map<String,Object>互转
背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...
- JavaBean 和 Map 之间互相转换
JavaBean 和 Map 之间互相转换 import java.beans.BeanInfo; import java.beans.IntrospectionException; import j ...
- Json、JavaBean、Map、XML之间的互转
思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...
- javabean转换为map对象
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
- 基于java反射的javabean和map相互转换的工具类
话不多说,代码如下 package com.study; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...
- JavaBean与Map<String,Object>相互转换
一.为什么要实现javaBean与Map<String,Object>相互转换 Spring中的BaseCommandController对象可以将传递过来的参数封装到一个JavaBean ...
- 1.利用BeanMap进行对象与Map的相互转换
javabean与map的转换有很多种方式,比如: 1.通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个b ...
随机推荐
- 第九章 Odoo 12开发之外部 API - 集成第三方系统
Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 P ...
- springboot中的web项目不能访问templates中的静态资源
方法1: 重新创建文件夹,配置yml文件: spring.resources.static-locations=classpath:/view/ spring.mvc.view.suffix=.htm ...
- localStorage,sessionStorage,cookie区别
localStorage:HTML5新增的在浏览器端存储数据的方法.设置和获取localStorage的方法: 设置: localStorage.name = 'zjj'; 获取: localStor ...
- a common method to rotate the image
/* * clockwise rotate * first reverse up to down, then swap the symmetry * 1 2 3 7 8 9 7 4 1 * 4 5 6 ...
- Docker在线文档收集
极客学院 kubernetes中文社区 易百教程
- JDK源码阅读--ArrayList
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...
- python格式化输出%,while else
一.格式化输出% 需求:自我介绍模板 #格式化输出 # % s d %占位符,占个位置 s(字符串),d(数字)替换内容的类型 name = input('请输入姓名:') age = input(' ...
- css3之 过渡
早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成.但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化,让效果显得更 ...
- vue @scroll
参考: https://blog.csdn.net/qq449736038/article/details/80769507
- WebSockets
WebSocket 是为了在一个单独的持久连接上提供全双工的双向通信.有关WebSocket API的内容可以参考这里. 这里简单说明下WebSocket在javascript中的用法. 1 WebS ...