`
zjmfeeling
  • 浏览: 23836 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

map和java对象转换

 
阅读更多

利用java反射机制实现map和java对象的互相转换

------------------------------------------------------

1)java对象-》map

/**
	 * @description 接收DTO Object对象,转换成Map类型
	 * DTO里的属性名称是Map里的key
	 * @param obj 需要转换的DTO对象
	 * @return Map
	 */
	@SuppressWarnings("unchecked")
	public static Map dtoToMap(Object obj){
		Map map = new HashMap();
		if(null != obj ){
			Class cla = obj.getClass();
			do{
				Field[] fields = cla.getDeclaredFields();
				for(Field field : fields ){
					String name = field.getName();
					try {
						Method method = cla.getMethod("get"+initCap(name), null);
						map.put(name, method.invoke(obj, null));
					} catch (Exception e) {
						e.printStackTrace();
						fields = null;
					}
				}
				//获取父类属性
				cla = cla.getSuperclass();
			}while(cla != Object.class);
		}
		return map;
	}
	/**s
	 * @description 替换DTO属性名称首字母为大写 如:name-->Name
	 * @param attr 
	 * @return 大写形式的属性名称
	 */
	private static String initCap(String attr){
		return attr.substring(0, 1).toUpperCase()+attr.substring(1);
	}

 

 

-----------------------------------------------------

2)map-》java对象

/**
	 * @description 接收Map和转换目标对象的相对路径,实现Map集合到List的DTO集合的转换
	 * @param map 
	 * @param className 转换目标对象的相对路径
	 * @return List 
	 */
	@SuppressWarnings("unchecked")
	public static List mapToDto(Map map, String className){
		List list = new ArrayList();
		if(null != map && null != className && !"".equals(className)){
		Iterator iter = map.entrySet().iterator();
		Object dto = null;
		while(iter.hasNext()){
			Map.Entry entry = (Map.Entry)iter.next();
			Object obj = entry.getValue();
			if(null != obj && obj instanceof Map ){
				HashMap m = (HashMap)obj;
				try {
					Class cla = Class.forName(className);
					dto = cla.newInstance();
					do{
						Field[] fields = cla.getDeclaredFields();
						for(Field fiel : fields ){
							Object val = m.get(fiel.getName());
							if(val != null){
								Class type = fiel.getType();
								setter(dto, fiel.getName(), getFieldValToObj(val, type.getName()), type);
							}
						}
						cla = cla.getSuperclass();
					}while(cla != Object.class);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			list.add(dto);
		}
		map.clear(); map = null;
		}
		return list;
	}
	
	private static Object getFieldValToObj(Object val, String tName){
		if("java.lang.Integer".equals(tName)){
			val = Integer.parseInt(val.toString());
		}else if("java.lang.Double".equals(tName)){
			val = Double.parseDouble(val.toString());
		}else if("java.lang.Float".equals(tName)){
			val = Float.parseFloat(val.toString());
		}else if("java.lang.Long".equals(tName)){
			val = Long.parseLong(val.toString());
		}else if("java.lang.Boolean".equals(tName)){
			val = Boolean.parseBoolean(val.toString());
		}else if("java.lang.Byte".equals(tName)){
			val = Byte.parseByte(val.toString());
		}else if("java.lang.Short".equals(tName)){
			val = Short.parseShort(val.toString());
		}else if("java.sql.Timestamp".equals(tName)){
			Object ts = val;
			val = Timestamp.valueOf(ts.toString());
		}
		return val;
	}

	/**
	 * @description 通过反射机制,回调接收的DTO对象,并调用set方法存值
	 * @param obj DTO实例对象
	 * @param field DTO对象的属性名
	 * @param value 属性名称的值
	 * @param ftype 属性的数据类型
	 */
	@SuppressWarnings("unchecked")
	private static void setter(Object obj, String field, Object value, Class ftype){
		try {
			Method method = obj.getClass().getMethod("set"+initCap(field), ftype);
			method.invoke(obj, value);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * @description 转换DTO属性首字母为大写形式 name-->Name
	 * @param attr 属性名称
	 * @return 属性名称的大写形式
	 */
	private static String initCap(String attr){
		return attr.substring(0, 1).toUpperCase()+attr.substring(1);
	}

 

分享到:
评论

相关推荐

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

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

    Java xml转化为map

    - 如果XML结构简单,没有复杂的嵌套,可以使用JAXB将XML解析为Java对象,然后手动将其转换为Map。例如,如果你有一个只有一个根元素且没有子元素的XML,你可以创建一个对应的Java类,并使用JAXB的`Unmarshaller....

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

    在这个方法中,我们创建了一个`ObjectMapper`实例,它是Jackson库的核心类,用于进行JSON与Java对象之间的映射。`readValue`方法接受两个参数:一个是JSON文件的路径,另一个是目标类型,这里是`Map.class`。 现在...

    java转换xml、list、map和json

    例如,在上面的代码中,maptoXml方法将Map对象转换为xml字符串。该方法首先创建了一个Document对象,然后添加一个node元素,接着遍历Map对象的keySet,生成key元素,并将其添加到node元素中。最后,使用doc2String...

    将Map转换成Java实体

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

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

    在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...

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

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

    MapToObjectUtil.java(Map转Object对象)

    Java代码Map转Object对象

    json格式与java类对象相互转换

    1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...

    java将xml串转换成Map类型

    将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map

    Java 对象属性map排序示例

    本示例将详细介绍如何对Java对象属性Map进行排序。 首先,了解Map的基本类型。Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义...

    java对象转对象插件

    "java对象转对象插件"旨在简化这个过程,提供了一种便捷的方式来将Java对象转换为Map、List、Set或其他对象,提高了开发效率。下面将详细介绍这个插件的工作原理、使用方法及其优势。 首先,Java对象到Map的转换是...

    java Pojo转Map

    将Pojo对象转换为Map,可以简化数据处理过程,尤其是在JSP页面上展示数据时,Map的灵活性更加突出。本文将详细介绍如何实现Java中的Pojo到Map的转换,并通过具体的示例来演示这一过程。 首先,我们需要一个Pojo类,...

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

    首先,Fastjson是阿里巴巴开源的一个高性能的JSON库,它不仅支持JSON到Java对象的解析和序列化,还提供了方便的Java Bean到JSON以及JSON到Java Bean的转换功能。 1. **Fastjson进行Java Bean到Map的转换**: 使用...

    java xml和map互转

    在Java编程中,XML(可扩展标记语言)是一种用于存储和传输数据的标准化格式,而Map是Java集合框架中的一个重要接口,它提供了键值对的数据结构。将XML与Map进行互转是常见的需求,特别是在处理配置文件或者进行数据...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    JAVA对象转化为JSON

    6. **`ezmorph-1.0.6.jar`**:EZMorph库主要用于Java对象的动态转换,虽然不是直接用于JSON转换,但在需要将Java对象转换成适合JSON格式的类型时,可能会用到。 在实际应用中,如果你对JSON的结构有严格的要求,如...

    java 读取csv 并转为Map<String,Object>

    通过引用【opevcsv】依赖,逐行读取数据 并转为Map,Object&gt;格式,后续可以通过BeanUtil.MaptoBean()方法将map转为你需要的bean对象; csv文件必须带表头,bean对象命名符合驼峰格式; 通过此方法可以快速的将文件...

    json 转为map 适合java

    在 Java 中,可以使用多种方法将 json 转换为 map,本文讨论了使用 JSONObject 和 ListOrderedMap 将 json 转换为 map 的方法。将 json 转换为 map 可以方便地操作和存储数据,提高数据处理效率,实现数据共享。

    对象转换成JSON和Map

    - **Java中的JSON转换**:在Java中,我们可以使用如Jackson、Gson、Fastjson等库将Java对象转换为JSON字符串。例如,Jackson库的`ObjectMapper`类提供了`writeValueAsString()`方法,可以将Java对象转换为JSON字符...

Global site tag (gtag.js) - Google Analytics