import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* HashMap与Bean互转工具类
*
* @author hailan
* @time 2015-10-12下午05:56:34
*/
public class HashMapBeanTools {
/**
* HashMap转换成JavaBean
*
* @author hailan
* @time 下午05:57:16
* @param map
* @param cls
* @return
*/
public static Object hashMapToJavaBean(HashMap<?,?> map, Class<?> cls) {
Object obj = null;
try {
obj = cls.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// 取出bean里的所有方法
Method[] methods = cls.getMethods();
for (int i = 0; i < methods.length; i++) {
// 取方法名
String method = methods[i].getName();
// 取出方法的类型
Class<?>[] cc = methods[i].getParameterTypes();
if (cc.length != 1)
continue;
// 如果方法名没有以set开头的则退出本次for
if (!method.startsWith("set") )
continue;
// 类型
String type = cc[0].getSimpleName();
try {
//
Object value = method.substring(3,4).toLowerCase().concat(method.substring(4));
// 如果map里有该key
if (map.containsKey(value)) {
// 调用其底层方法
setValue(type, map.get(value), i, methods, obj);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return obj;
}
/**
* 调用底层方法设置值
*
* @author hailan
* @time 下午06:01:56
* @param type
* @param value
* @param i
* @param method
* @param bean
* @throws Exception
*/
private static void setValue(String type, Object value, int i, Method[] method,
Object bean) throws Exception {
if (value != null && !value.equals("")) {
try {
if (type.equals("String")) {
// 第一个参数:从中调用基础方法的对象 第二个参数:用于方法调用的参数
method[i].invoke(bean, new Object[] { value });
} else if (type.equals("int") || type.equals("Integer")) {
method[i].invoke(bean, new Object[] { new Integer(""
+ value) });
} else if (type.equals("BigDecimal")) {
method[i].invoke(bean, new Object[] { new BigDecimal((String)value) });
} else if (type.equals("long") || type.equals("Long")) {
method[i].invoke(bean,
new Object[] { new Long("" + value) });
} else if (type.equals("boolean") || type.equals("Boolean")) {
method[i].invoke(bean, new Object[] { Boolean.valueOf(""
+ value) });
} else if (type.equals("Date")) {
Date date = null;
if (value.getClass().getName().equals("java.util.Date")) {
date = (Date) value;
} else {
//根据文件内的格式不同修改,时间格式太多在此不做通用格式处理。
if (value.toString().length() > 10){
String format = "yyyy-MM-dd HHmmss";
date = parseDateTime("" + value, format);
} else if (value.toString().length() == 10){
String format = "yyyy-MM-dd";
date = parseDateTime("" + value, format);
} else if (value.toString().length() == 8){
String format = "yyyyMMdd";
date = parseDateTime("" + value, format);
} else if (value.toString().length() == 14){
String format = "yyyyMMddHHmmss";
date = parseDateTime("" + value, format);
}else if (value.toString().length() == 6){
String format = "HHmmss";
date = parseDateTime("" + value, format);
}
}
if (date != null) {
method[i].invoke(bean, new Object[] { date });
}
} else if (type.equals("byte[]")) {
method[i].invoke(bean,
new Object[] { new String(value + "").getBytes() });
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
/**
* 日期格式转换
*
* @author hailan
* @time 下午06:02:59
* @param dateValue
* @param format
* @return
*/
private static Date parseDateTime(String dateValue, String format) {
SimpleDateFormat obj = new SimpleDateFormat(format);
try {
return obj.parse(dateValue);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static Map<String, Object> hashJavaBeanToMap(Object ojt) {
Class<?> cls = ojt.getClass();
Field[] field = cls.getDeclaredFields();
HashMap<String, Object> mapbean = new HashMap<String, Object>();
for(int i=0;i<field.length;i++){
Field f = field[i];
f.setAccessible(true);
try {
mapbean.put(f.getName(), f.get(cls));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return mapbean;
}
}
分享到:
相关推荐
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
在Java编程中,Java Bean和Map是两种常用的...总的来说,Java Bean和Map之间的互转在Java开发中非常常见,尤其是在数据交换和视图渲染时。理解并掌握这两种数据结构的转换技巧,有助于提升开发效率和代码的可维护性。
本知识点重点讲解将List<Bean>转换为List的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List<Bean>转换为List 在Java中,...
在Java编程中,ECharts是一种基于JavaScript的...这个过程包括提取类别和系列数据、构建ECharts所需的JSON结构,并确保数据与ECharts的预期格式相匹配。这种方法具有一定的灵活性,能够适应不同的数据源和图表类型。
### JSON与JAVA数据的转换 在现代软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于前后端交互、配置文件存储等场景。而在Java编程语言中,处理JSON数据通常涉及到将JSON...
Java海量数据分页Bean, 适用于Oracle(适当修改,适用于任何数据库).功能描述:传入到达页码(具有容错性)、每页记录数、Select查询语句,返回该页所有的记录(整页是List集合,每条记录是一个 HashMap)、总行数、总...
在进行 JSON 数据与 Java Bean 的转换之前,我们需要准备一些必要的工具库。常用的库有 Jackson 和 Fastjson,它们都提供了强大的功能来支持 JSON 的序列化和反序列化。 ##### 添加依赖 在 Maven 项目的 `pom.xml`...
在Java中,我们可以使用JAXB(Java Architecture for XML Binding)进行XML与Java对象之间的双向绑定,或者使用DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等API来...
在Java开发中,处理JSON数据是一项常见的任务,特别是在与服务器进行数据交互时。本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`...
本文将详细介绍如何使用JSON-lib库进行Java对象与JSON对象之间的转换。 首先,为了进行这些转换,我们需要引入JSON-lib库以及其依赖的第三方包,如Apache Commons、oro、ezmorph和nu.xom。可以从以下地址下载JSON-...
Spring框架是Java领域里一个非常重要的开源框架,它提供了一整套的解决方案,让Java应用的开发变得更为高效和方便。Spring框架的核心特性之一就是依赖注入(DI)和控制反转(IoC),而这些功能主要是通过XML配置文件...
hashmap源码 java-notes 算法 数据结构 设计模式 基础 集合 ConcurrentHashMap IO 并发 [Java 并发]( 并发.md) AQS 源码 JVM web 基础 [NGINX 简介](./docs/nginx/NGINX 简介.md) 框架 Spring [观察 Spring bean ...
Bean对象转换涉及到Java类与JSON对象的映射。JSON-lib支持转换具有公共属性的Java类实例。在给出的Java代码中,`JsonBean`类包含了一些字段,如字符串、整数、字符数组、函数表示字符串以及JSONFunction对象。`...
以下是基于JSON-lib的Java对象与JSON对象转换的一些基本示例。 1. **List转换** 以下代码展示了如何将Java的`List`转换为JSON数组: ```java List<String> list = new ArrayList(); list.add("first"); list....
1. **JSON与Java对象的互转**: - JSON对象可以映射为Java对象,如HashMap、ArrayList等。JSON字符串到Java对象的转换通常通过反序列化实现,而Java对象到JSON字符串的转换则称为序列化。 - json-lib库提供了一套...
【标题】"mi-yi-collection-bean-master_java_源码" 涉及的主要知识点是Java集合框架中的Bean类和其在实际项目中的应用。这个压缩包可能包含了一个Java项目,其中的核心部分是对集合对象(如List、Set、Map等)进行...
本主题主要探讨的是如何使用Gson库处理JSON数据与Java中的Bean、Array、List、Map以及简单类型的相互转换。 首先,我们来看JSON与Java Bean之间的转换。Java Bean是一种具有特定属性和方法的对象,它们通常用来封装...