package com.kedacom.common.util;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class BeanToMapUtil {
/**
* 将一个 Map 对象转化为一个 JavaBean
*
* @param type
* 要转化的类型
* @param map
* 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InstantiationException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
@SuppressWarnings("unchecked")
public static Object convertMap(Class type, Map map) throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
Object obj = type.newInstance(); // 创建 JavaBean 对象
// 给 JavaBean 对象的属性赋值
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值.
Object value = map.get(propertyName);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, args);
}
}
return obj;
}
/**
* 将一个 JavaBean 对象转化为一个 Map
*
* @param bean
* 要转化的JavaBean 对象
* @return 转化出来的 Map 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
@SuppressWarnings("unchecked")
public static Map convertBean(Object bean) throws IntrospectionException, IllegalAccessException,
InvocationTargetException {
Class type = bean.getClass();
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(type);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
Method readMethod = descriptor.getReadMethod();
Object result = readMethod.invoke(bean, new Object[0]);
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, "");
}
}
}
return returnMap;
}
public static void main(String[] args) {
}
}
分享到:
相关推荐
在Java 8中将List转换为Map对象方法 在Java 8中,将List转换为Map对象是一种非常实用的技术,特别是在处理大规模数据时非常有用。本文将详细介绍在Java 8中将List转换为Map对象的方法,并提供了多种实现方式。 ...
对象与map互相转换工具类
"对象转换成JSON和Map"是一个核心话题,特别是在Java编程语言中,因为JSON(JavaScript Object Notation)是网络通信中广泛使用的轻量级数据交换格式,而Map则是一种通用的数据结构,用于存储键值对。下面我们将深入...
对象与map 的转换 详细解读可以单个转换 也可以多个循环转化,增加 调用方法的兼容性
将一个对象快捷转换成map 将map在转换成对象 可以直接获取webresult对象中data数据
反过来,我们也可以将Map转换回Java Bean对象: ```java MyBean myBean = JSON.parseObject(map.toString(), MyBean.class); ``` 其次,BeanMap是Apache Commons Lang库中的一个工具类,它允许我们把Java Bean...
总结起来,将Map转换为Java实体对象是Java开发中常见的需求,我们可以利用Core Java JDK 1.8的泛型和反射来实现这一功能。通过创建一个通用的工具类,我们可以简化代码并提高代码复用性。在使用过程中,需要注意处理...
总的来说,通过Spring JDBC的JdbcTemplate,我们可以方便地将数据库查询结果转化为Map对象,实现灵活的数据处理。这种方式简化了数据操作,提高了代码的可维护性,但同时也需要注意类型转换的风险。在实际开发中,...
"java转换xml、list、map和json" ...本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点,包括xml和map之间的转换、xml和list之间的转换、xml和json之间的转换、map和json之间的转换等。
在Java编程中,Map接口是数据结构之一,用于存储键值对。...对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制Java程序中数据的排序逻辑。
这个任务可以通过使用特定的库来简化,例如Apache Commons BeanUtils库,该库包含在"用于将map转换成对象的jar包"中。这个jar包主要包含两个文件:`commons-beanutils-1.8.0.jar`和`commons-logging-1.1.3.jar`。 `...
如果JSON包含嵌套的对象或数组,它们会被转换为`Map`或`List`。 对于Map取值,你可以使用`get`方法: ```java String key = "exampleKey"; Object value = jsonData.get(key); ``` 如果值是另一个JSON对象或数组...
在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...
在Java编程中,有时我们需要将一个`Map`对象转换为字符串形式进行存储或传输,而在接收端又需要将该字符串重新转换回`Map`对象以便进一步处理。本篇将详细介绍如何通过特定的方法实现这一过程,并深入分析其实现细节...
本篇将详细介绍如何在Java中将XML文件转换为Map对象。 首先,我们需要理解XML的基本结构。XML由一系列元素组成,每个元素可以有属性和子元素。在转化过程中,元素的标签将作为Map的键,元素的文本内容将作为值。...
在Web开发中,尤其是前后端分离的项目,经常需要将后端Java对象转换为JSON格式的数据,以便前端能够接收和解析。在Java中,最常用的JSON处理库之一是Jackson。 #### 转换步骤: 1. **创建JsonFactory实例**:使用...
总之,MapStruct提供了一种优雅的对象转换解决方案,它通过自动化代码生成,解决了传统JavaBean转换的痛点,提高了开发效率,降低了出错风险,并保持了代码的简洁性和可维护性。在现代Java开发中,MapStruct是一个...
标题中的“map转化为list”指的是在编程中,我们经常需要将Map对象的键值对转换成List对象,以便于进一步处理或展示数据。这个过程通常涉及到Java集合框架中的转换操作,尤其是在处理数据结构时。 在Java中,Map是...
2. **字符串与JSON对象之间的转化**:JavaScript提供了两个内置函数来实现这种转化:`JSON.stringify()`用于将JavaScript对象转换为JSON字符串,`JSON.parse()`用于将JSON字符串转换回JavaScript对象。 **描述中的...
// 使用Gson将Map转换为JSON字符串 Gson gson = new Gson(); String jsonString = gson.toJson(myMap); System.out.println("Map转JSON: " + jsonString); } } ``` 这段代码首先创建了一个Map对象,然后使用...