`
John_Kong19
  • 浏览: 276209 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对象和map转换

 
阅读更多
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) {
	}
}
分享到:
评论
1 楼 liubey 2013-10-12  
首先谢谢LZ的文章,
其实我想问个问题,既然有心做成工具类,就最好不要做成受检异常吧

相关推荐

    在Java 8中将List转换为Map对象方法

    在Java 8中将List转换为Map对象方法 在Java 8中,将List转换为Map对象是一种非常实用的技术,特别是在处理大规模数据时非常有用。本文将详细介绍在Java 8中将List转换为Map对象的方法,并提供了多种实现方式。 ...

    对象与map互相转换工具类

    对象与map互相转换工具类

    对象转换成JSON和Map

    "对象转换成JSON和Map"是一个核心话题,特别是在Java编程语言中,因为JSON(JavaScript Object Notation)是网络通信中广泛使用的轻量级数据交换格式,而Map则是一种通用的数据结构,用于存储键值对。下面我们将深入...

    对象与map 的转换

    对象与map 的转换 详细解读可以单个转换 也可以多个循环转化,增加 调用方法的兼容性

    将对象变成map

    将一个对象快捷转换成map 将map在转换成对象 可以直接获取webresult对象中data数据

    Java Bean对象和Map相互转换.zip

    反过来,我们也可以将Map转换回Java Bean对象: ```java MyBean myBean = JSON.parseObject(map.toString(), MyBean.class); ``` 其次,BeanMap是Apache Commons Lang库中的一个工具类,它允许我们把Java Bean...

    将Map转换成Java实体

    总结起来,将Map转换为Java实体对象是Java开发中常见的需求,我们可以利用Core Java JDK 1.8的泛型和反射来实现这一功能。通过创建一个通用的工具类,我们可以简化代码并提高代码复用性。在使用过程中,需要注意处理...

    java中将数据库中数据赋值给Map对象源代码

    总的来说,通过Spring JDBC的JdbcTemplate,我们可以方便地将数据库查询结果转化为Map对象,实现灵活的数据处理。这种方式简化了数据操作,提高了代码的可维护性,但同时也需要注意类型转换的风险。在实际开发中,...

    java转换xml、list、map和json

    "java转换xml、list、map和json" ...本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点,包括xml和map之间的转换、xml和list之间的转换、xml和json之间的转换、map和json之间的转换等。

    Java 对象属性map排序示例

    在Java编程中,Map接口是数据结构之一,用于存储键值对。...对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制Java程序中数据的排序逻辑。

    用于将map转换成对象的jar包

    这个任务可以通过使用特定的库来简化,例如Apache Commons BeanUtils库,该库包含在"用于将map转换成对象的jar包"中。这个jar包主要包含两个文件:`commons-beanutils-1.8.0.jar`和`commons-logging-1.1.3.jar`。 `...

    Java读取json文件,并转化为map取值

    如果JSON包含嵌套的对象或数组,它们会被转换为`Map`或`List`。 对于Map取值,你可以使用`get`方法: ```java String key = "exampleKey"; Object value = jsonData.get(key); ``` 如果值是另一个JSON对象或数组...

    使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型

    在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...

    map.toString()后转换成Map类型

    在Java编程中,有时我们需要将一个`Map`对象转换为字符串形式进行存储或传输,而在接收端又需要将该字符串重新转换回`Map`对象以便进一步处理。本篇将详细介绍如何通过特定的方法实现这一过程,并深入分析其实现细节...

    List转换为List

    在Web开发中,尤其是前后端分离的项目,经常需要将后端Java对象转换为JSON格式的数据,以便前端能够接收和解析。在Java中,最常用的JSON处理库之一是Jackson。 #### 转换步骤: 1. **创建JsonFactory实例**:使用...

    优雅的对象转换解决方案,为什么更推荐MapStruct呢.docx

    总之,MapStruct提供了一种优雅的对象转换解决方案,它通过自动化代码生成,解决了传统JavaBean转换的痛点,提高了开发效率,降低了出错风险,并保持了代码的简洁性和可维护性。在现代Java开发中,MapStruct是一个...

    map转化为list

    标题中的“map转化为list”指的是在编程中,我们经常需要将Map对象的键值对转换成List对象,以便于进一步处理或展示数据。这个过程通常涉及到Java集合框架中的转换操作,尤其是在处理数据结构时。 在Java中,Map是...

    js中的json对象和字符串之间的转化

    2. **字符串与JSON对象之间的转化**:JavaScript提供了两个内置函数来实现这种转化:`JSON.stringify()`用于将JavaScript对象转换为JSON字符串,`JSON.parse()`用于将JSON字符串转换回JavaScript对象。 **描述中的...

    Gson与Map互相转化

    // 使用Gson将Map转换为JSON字符串 Gson gson = new Gson(); String jsonString = gson.toJson(myMap); System.out.println("Map转JSON: " + jsonString); } } ``` 这段代码首先创建了一个Map对象,然后使用...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    本篇文章将详细介绍如何将Map和List集合转换为XML字符串,以及如何将XML字符串反向转换回Map和List集合。 首先,让我们探讨`Map`集合转成XML字符串的过程。一个`Map`对象存储键值对,可以使用各种库如`JAXB (Java ...

Global site tag (gtag.js) - Google Analytics