`

JavaBean与Map互换

    博客分类:
  • Java
阅读更多
参考网上例子修改得来
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;

import com.liuzd.sj.entity.User;

public class BeanMapConverUtil {

	/**
	 * 将一个 JavaBean 对象转化为一个 Map	
	 * @param bean        要转化的JavaBean 对象
	 * @return returnMap  转化出来的 Map 对象
	 */
	public static <T> Map<String, Object> beanToMap(T bean) {

		Class<? extends Object> type = bean.getClass();
		Map<String, Object> returnMap = new HashMap<String, Object>();

		try {
			BeanInfo beanInfo = Introspector.getBeanInfo(type);
			PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
			for (PropertyDescriptor descriptor : propertyDescriptors) {
				String propertyName = descriptor.getName();
				if (!propertyName.equals("class")) {
					Method readMethod = descriptor.getReadMethod();
					Object result = readMethod.invoke(bean, new Object[0]);
					returnMap.put(propertyName, result != null ? result : "");					
				}
			}
		} catch (IntrospectionException e) {
			throw new RuntimeException("分析类属性失败", e);
		} catch (IllegalAccessException e) {
			throw new RuntimeException("分析类属性失败", e);
		} catch (InvocationTargetException e) {
			throw new RuntimeException("分析类属性失败", e);
		}
		return returnMap;
	}

	/**
	 * 将一个Map对象转化为一个JavaBean
	 * 
	 * @param map         包含属性值的map
	 * @param bean        要转化的类型
	 * @return beanObj    转化出来的JavaBean对象
	 */
	public static <T> T mapToBean(Map<String, Object> paramMap, Class<T> clazz) {	
		T beanObj = null;
		try {
			beanObj = clazz.newInstance();
			String propertyName = null;
			Object propertyValue = null;
			for (Map.Entry<String, Object> entity : paramMap.entrySet()) {
				propertyName = entity.getKey();
				propertyValue = entity.getValue();
				setProperties(beanObj, propertyName, propertyValue);
			}
		} catch (IllegalArgumentException e) {
			throw new RuntimeException("不合法或不正确的参数", e);
		} catch (IllegalAccessException e) {
			throw new RuntimeException("实例化JavaBean失败", e);		
		} catch (Exception e) {
			throw new RuntimeException("Map转换为Java Bean对象失败", e);
		}
		return beanObj;
	}

	public static <T> void setProperties(T entity, String propertyName,
			Object value) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		PropertyDescriptor pd = new PropertyDescriptor(propertyName, entity.getClass());
		Method methodSet = pd.getWriteMethod();
		methodSet.invoke(entity, value);
	}
	
	public static void main(String[] args) {
		User user = new User();
		user.setAddress("成都市");
		user.setAge(34);
		user.setId("123456");
		user.setName("刘少奇");
		user.setPassword("123456");
		user.setSex("1");
		Map<String,Object> um = util.BeanMapConverUtil.beanToMap(user);;		
		for (Map.Entry<String,Object> entity : um.entrySet()) {
			System.out.println(entity.getKey() + ","+entity.getValue());
		}		
		
		User newUser = util.BeanMapConverUtil.mapToBean(um, User.class);
		System.out.println(newUser);
		
	}

}
分享到:
评论

相关推荐

    JSON_ajax笔记1

    在Java中,JSON也有多种处理方式,包括与JavaBean、List和Map的互换: 1. **JavaBean和JSON的互换**:可以通过库如Gson或Jackson,将JavaBean对象序列化为JSON字符串,或者将JSON字符串反序列化为JavaBean对象。 2....

    json解析包

    Json-lib库支持多种Java类型,如JavaBean、Map、List、数组等与JSON之间的转换。以下是Json-lib的一些核心功能: 1. **Java对象到JSON的序列化**:Json-lib可以将Java对象(如JavaBean、Map、List等)转换为JSON...

    JSON_ajax笔记2

    在Java中,JSON可以与各种数据结构相互转换,如JavaBean、List和Map: - JavaBean和JSON的互换:可以使用Gson或Jackson库将JavaBean对象转换成JSON字符串,反之亦然。 - List和JSON的互换:将List对象转换成JSON...

    JSON-lib

    这在需要在XML和JSON之间互换数据时非常有用。可以使用`net.sf.json.JSONObject.fromXML(String xml)`方法完成这一操作。 5. **JSON反序列化**:将JSON字符串解析成Java对象的过程称为反序列化。JSON-lib提供了`...

    json核心包.zip

    - **与其他数据结构的互换**:json-lib允许开发者将JSON数据转换为Java中的各种数据结构,如JavaBean、Map、List等,反之亦然。这对于在Java应用程序中处理来自服务器或客户端的JSON数据非常有用。 - **错误处理**...

    java与json之间的互操作.pdf

    在Java开发中,JSON常用于数据传输和存储,因为它能够很好地与Java对象进行互换。JSON-lib是一个Java库,它提供了方便的API来处理JSON和XML之间的转换。 1. JSON-lib的功能: - 将Java对象转换为JSON格式的字符串...

    json基础文档

    ### JSON基础文档与Gson应用详解 #### 一、JSON简介及基本操作 **1. 使用`JsonObject`写JSON** - **概念介绍**: `JsonObject`是JSON中最基本的数据结构之一,它允许我们以键值对的形式存储数据。在Java中,我们...

    java servlet json依赖包

    Java Servlet与JSON(JavaScript ...开发者可以根据项目需求选择合适的库来实现JSON与Java对象的互换,从而提升开发效率和代码质量。在实际使用中,这些依赖包可以很好地支持JSON在Java Servlet环境中的各种应用场景。

    Java16道面试题及答案

    【Java面试题解析】 ...以上就是Java面试中涉及的一些关键知识点,涵盖了Tomcat服务器、Servlet、数据库操作、网络协议以及JavaBean访问等多个方面。掌握这些知识有助于深入理解Java Web开发的各个方面。

    java el jstl学习手册

    这两种方式通常可以互换使用,但在某些情况下,如属性名包含特殊字符时,必须使用 `[]` 运算符: ```jsp ${user["My-Name"]} ``` ##### 3.3 动态取值 当需要动态地获取属性名时,可以使用 `[]` 运算符: ```jsp ${...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例062 货币金额大写格式 78 实例063 String类格式化...

Global site tag (gtag.js) - Google Analytics