当前位置: 首页 > 编程笔记 >

java实现Object和Map之间的转换3种方式

周翼
2023-03-14
本文向大家介绍java实现Object和Map之间的转换3种方式,包括了java实现Object和Map之间的转换3种方式的使用技巧和注意事项,需要的朋友参考一下

利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的

public static Object mapToObject(Map<String, Object> map, Class<?> beanClass)
      throws Exception {
    if (map == null)
      return null;
    Object obj = beanClass.newInstance();
    org.apache.commons.beanutils.BeanUtils.populate(obj, map);
    return obj;
  }

  public static Map<?, ?> objectToMap(Object obj) {
    if (obj == null) {
      return null;
    }
    return new org.apache.commons.beanutils.BeanMap(obj);
  }

利用java reflect完成Obj和Map之间的相互转换

    public Map<String,Object> Obj2Map(Object obj) throws Exception{
      Map<String,Object> map=new HashMap<String, Object>();
      Field[] fields = obj.getClass().getDeclaredFields();
      for(Field field:fields){
        field.setAccessible(true);
        map.put(field.getName(), field.get(obj));
      }
      return map;
    }
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      Object obj = clz.newInstance();
      Field[] declaredFields = obj.getClass().getDeclaredFields();
      for(Field field:declaredFields){
        int mod = field.getModifiers(); 
        if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
          continue;
        }
        field.setAccessible(true);
        field.set(obj, map.get(field.getName()));
      }
      return obj;
    }

利用Introspector完成Obj和Map之间的相互转换

public Map<String,Object> obj2Map(Object obj) throws Exception{
      Map<String,Object> map=new HashMap<String, Object>();
      BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
      PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
       for (PropertyDescriptor property : propertyDescriptors) { 
         String key = property.getName();
         if (key.compareToIgnoreCase("class") == 0) {  
            continue; 
          } 
           Method getter = property.getReadMethod(); 
          Object value = getter!=null ? getter.invoke(obj) : null; 
          map.put(key, value); 
       }
      return map;
    }
    
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      if (map == null)  
        return null;  
      Object obj = clz.newInstance(); 
      BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());  
      PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();  
      for (PropertyDescriptor property : propertyDescriptors) { 
        Method setter = property.getWriteMethod();  
        if (setter != null) { 
          setter.invoke(obj, map.get(property.getName()));  
        } 
      } 
      return obj;
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java 3种方法实现进制转换,包括了Java 3种方法实现进制转换的使用技巧和注意事项,需要的朋友参考一下 由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制。 1.使用Java带有的方法Integer,最简单粗暴了,代码如下 2.使用数组进行交换,贴码: 3.使用StringBuilder类型,贴码: 以上就是Java 3种方法实现进制转换的详细内容,更多关于J

  • String[] arr = {"zs","ls","ww"}; List<String> list = Arrays.asList(arr); System.out.println(list); ArrayList<String> list1 = new ArrayList<String>(); list1.add("张三"); list1.add("李四"); list1.add("王五"

  • 本文向大家介绍如何实现数组和 List 之间的转换?相关面试题,主要包含被问及如何实现数组和 List 之间的转换?时的应答技巧和注意事项,需要的朋友参考一下 数组转 List:使用 Arrays. asList(array) 进行转换。 List 转数组:使用 List 自带的 toArray() 方法。 代码示例:  

  • 我正在使用hibernate将对象映射到数据库。客户端(一个iOS应用程序)以JSON格式向我发送特定对象,我使用以下实用程序方法将其转换为真实的表示形式: 但问题是,在我的pogo中,我将值存储为一个byte[],如下所示(因为这是存储在数据库中的内容--一个blob): 当然,现在转换失败了,因为它不能在一个byte[]和一个字符串之间进行转换。 这里最好的方法是更改构造函数以接受字符串而不是

  • 本文向大家介绍Python 实现list,tuple,str和dict之间的相互转换,包括了Python 实现list,tuple,str和dict之间的相互转换的使用技巧和注意事项,需要的朋友参考一下 1、字典(dict) 1.1 字典——字符串 返回: 1.2 字典——元组 返回:(‘age', ‘name', ‘class') 1.3 字典——元组 返回:(7, ‘Zara', ‘First

  • 问题内容: 抱歉,我认为这是一个继承问题:一直以来都是ArrayList问题! 好的,我的问题比我想象的要具体。所以我有两个家庭班。卡和区域。区域是用于存放卡片的盒子。 Zone,ZoneList和ZoneMap的前两个子类是存储卡的两种不同方式。诸如Hand和PokerHand之类的其他子类具有处理其存储卡的特定方式。 复杂的地方是Card还具有子类,例如PokerCard,而ZoneList和

  • 问题内容: 嗨,我想知道上述比较之间的区别吗? 我在检查时得到空指针异常。但是,如果我将其更改为,则效果很好。 问题答案: 和之间的区别 没有语义上的差异。 和 等价。 也许您将其与以下事实混淆了: 和 可以有所作为(因为第二种选择可能会导致NPE(如果被叫人为空)。

  • 本文向大家介绍Java编程实现时间和时间戳相互转换实例,包括了Java编程实现时间和时间戳相互转换实例的使用技巧和注意事项,需要的朋友参考一下 时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。使用数字签名技术产生的数据, 签名的对象包括了原始文件信息、 签名参数、 签名时间等信息。广泛的运用在知识产