java utils--6.map与对象互转

1      单个对象

1.1  适用简单类型

参看博客:https://blog.csdn.net/hechurui/article/details/60583497

适用不包含类的类(基本数据类型,数组,集合)

 

1.由于map是没有顺序的,在有些对数据顺序要求比较严格的

   2.map从内到外都是object类型,如果用到对象中包含对象

 

1.1.1  转换demo

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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import com.kun.xiangtan.service.Po; 
 
 
/**
 * @作用:单个map和对象互转
 * @意义:1.由于map是没有顺序的,在有些对数据顺序要求比较严格的
 *    2.map从内到外都是object类型,如果用到对象中包含对象
 * @试用范围:不包含类的类(基本数据类型,数组,集合)
 */ 
public classMapObject { 
   /**
     * 将一个 Map 对象转化为一个 JavaBean
     * @param clazz 要转化的类型
     * @param map 包含属性值的 map
     * @return转化出来的 JavaBean 对象
     * @throws IntrospectionException 如果分析类属性失败
     * @throws IllegalAccessException 如果实例化 JavaBean 失败
     * @throws InstantiationException 如果实例化 JavaBean 失败
     * @throws InvocationTargetException 如果调用属性的 setter 方法失败
     */ 
   @SuppressWarnings("rawtypes") 
   publicstatic<T> T toBean(Class<T> clazz, Map map){ 
        T obj = null; 
        try { 
            BeanInfo beanInfo = Introspector.getBeanInfo(clazz); 
            obj = clazz.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); 
                    if ("".equals(value)){ 
                        value = null; 
                    } 
                    Object[] args = new Object[1]; 
                    args[0] = value; 
                    try { 
                        descriptor.getWriteMethod().invoke(obj, args); 
                    } catch(InvocationTargetException e) { 
                        System.out.println("字段映射失败"); 
                    } 
                } 
            } 
        } catch (IllegalAccessException e) { 
            System.out.println("实例化 JavaBean 失败"); 
        } catch (IntrospectionException e) { 
            System.out.println("分析类属性失败"); 
       } catch (IllegalArgumentException e) { 
            System.out.println("映射错误"); 
        } catch (InstantiationException e) { 
            System.out.println("实例化 JavaBean 失败"); 
        } 
        return (T) obj; 
   } 
 
   /**
     * 将一个 JavaBean 对象转化为一个 Map
     * @param bean 要转化的JavaBean 对象
     * @return转化出来的 Map 对象
     * @throws IntrospectionException 如果分析类属性失败
     * @throws IllegalAccessException 如果实例化 JavaBean 失败
     * @throws InvocationTargetException 如果调用属性的 setter 方法失败
     */ 
   @SuppressWarnings("rawtypes") 
   publicstaticMap toMap(Object bean){ 
        Class<? extends Object> clazz = bean.getClass(); 
        Map<Object, Object> returnMap = new HashMap<Object,Object>(); 
        BeanInfo beanInfo = null; 
        try { 
            beanInfo = Introspector.getBeanInfo(clazz); 
            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 = null; 
                    result = readMethod.invoke(bean,newObject[0]); 
                    if (null != propertyName) { 
                        propertyName = propertyName.toString(); 
                    } 
                    if (null != result) { 
                        result = result.toString(); 
                    } 
                    returnMap.put(propertyName, result); 
                } 
            } 
        } catch (IntrospectionException e) { 
            System.out.println("分析类属性失败"); 
        } catch (IllegalAccessException e) { 
            System.out.println("实例化 JavaBean 失败"); 
        } catch (IllegalArgumentException e) { 
            System.out.println("映射错误"); 
        } catch (InvocationTargetException e) { 
            System.out.println("调用属性的 setter 方法失败"); 
        } 
        return returnMap; 
   } 
 
   publicstaticvoidmain(String[] args){
      //体现map无顺序
        Map<Object, Object> map = new HashMap<Object,Object>(); 
        map.put("id", "map1111"); 
        map.put("station_name", "map火车站"); 
        map.put("station_no", 2); 
        String [] arr = {"1", "55"};
        map.put("arr", arr);
        List l = new ArrayList<>();
        l.add("1111");
        l.add("1122");
        l.add("1133");
        map.put("l", l);
       
        //1.map转换成对象
        System.out.println("---------map转换成对象----------");
        System.out.println("原map:" + map);
        Po poObj = toBean(Po.class, map); 
        System.out.println("现对象:" + poObj);
       
        Po p = new Po(); 
        p.setId("111"); 
        p.setKind("up");
       
        //2.对象转换成map
        System.out.println("---------对象转换成map----------");
        System.out.println("原对象:" + p);
        Map mMap = toMap(p); 
        System.out.println("现map(还是无顺序的):" + mMap); 
 
   } 
} 

1.1.2  输出结果

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java-properties-utils-1.7.1.jar是一个Java开发工具包,用于简化处理Java属性文件的操作。属性文件通常用于存储键值对,可以用于配置应用程序的参数。这个工具包提供了一些方便的方法,可以轻松地读取、写入和修改属性文件的内容。 该工具包提供了几个主要的功能。首先,它可以通过提供文件路径来加载属性文件,并将其转化为Java的属性对象。这样,我们就可以通过代码来读取和操作属性文件中的键值对。 其次,该工具包提供了一些实用的方法,用于读取和获取属性文件中的特定键值对。例如,我们可以使用getProperty()方法根据键来获取属性值,还可以使用containsKey()方法来检查属性文件中是否包含特定的键。 此外,该工具包还提供了一些方便的方法,用于向属性文件中写入和更新键值对。使用setProperty()方法可以设置属性值,而使用store()方法可以将更改后的属性文件写入到指定的文件路径中。 除了基本的读写操作,该工具包还提供了其他一些有用的功能。例如,它可以将属性对象转化为Map对象,方便我们在程序中进行进一步的处理。此外,它还支持将属性文件转化为XML格式,以便于在不同平台和环境中的数据传输和交换。 总之,java-properties-utils-1.7.1.jar是一个功能强大的Java开发工具包,可以方便地处理属性文件,并提供了许多方便的方法和功能,有助于简化我们在Java应用程序中对属性文件的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值