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

发布时间:2020-10-17 18:42:04

来源:脚本之家

阅读:98

作者:古越剑箫

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

public static Object mapToObject(Map 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 Obj2Map(Object obj) throws Exception{

Map map=new HashMap();

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 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 obj2Map(Object obj) throws Exception{

Map map=new HashMap();

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 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的object如何转为map_java实现Object和Map之间的转换3种方式相关推荐

  1. map怎么转化dto_java实现Object和Map之间的转换3种方式

    利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的 public static Object mapToObject(Map map, Class> ...

  2. 【java】之3种方式实现Object和Map之间的转换

    转载:[java]之3种方式实现Object和Map之间的转换 - 古越剑箫 - 博客园

  3. Java实现Object和Map之间的转换

    Java实现Object和Map之间的转换 public class Obj2MapUtils {/*** 将Object类型的数据转化成Map<String,Object>* @para ...

  4. Java反射机制01_反射的概念以及获取字节码信息 的四种方式

    Java反射机制01-反射的概念以及获取字节码信息 的四种方式 一.反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意 ...

  5. Javascript Object和Map之间的转换

    简单的区分Map和Object Map是ES6退出的一个类型,特点:任何值都可作为属性名 Object特点:属性名只能是字符串(一开始我也不信,测试后才发现的) 代码 图片 创建一个map类型 new ...

  6. java中map类型_Java中Map类型遍历的两种方式对比

    Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...

  7. java用beaninfo_java 可以使用BeanInfo实现bean实体与map之间的互相转换

    java 使用BeanInfo实现bean实体与map之间的互相转换. BeanInfo接口提供有关其 bean 的显式信息的 bean 实现者可以提供某个 BeanInfo 类,该类实现此 Bean ...

  8. java 给对象创建实例_Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  9. java子类和父类实例_java中父类与子类之间的转换示例

    java中父类与子类之间的转换示例有以下三点: 示例一 父类强制转子类 pre class="brush:php;toolbar:false">Father f = new ...

最新文章

  1. Ace-editor 输入内容时光标闪动,定位错乱的解决方案
  2. 2015上半年软件设计师考点,难点3
  3. MySQL索引使用方法和性能优化
  4. 检索图书 FindMess.java
  5. 带你学python基础:列表List
  6. [原]NYOJ-开灯问题-77
  7. 在Python当中如何打印输出当前时间(代码)
  8. c语言 头文件卫士详解,C 语言条件编译与防止头文件重复
  9. Scrapy架构及其组件之间的交互
  10. expdp导出表结构_Oracle用exp导出部分表和expdp
  11. 鸿蒙官网首页,鸿蒙官网-鸿蒙手游官网首页最新版预约 v1.0-优盘手机站
  12. Luogu1220 关路灯
  13. CentOS安装sun java
  14. docker镜像加速,docker更换为国内镜像
  15. BAPI记录......
  16. 打破FTTR布线标准瓶颈,让千兆光纤网络走进千家万户
  17. AjaxPro Ajax.Net
  18. 美味连连-QQ游戏辅助-简单实用的QQ游戏美味连连辅助(非外挂)
  19. 如何在桌面版linux怎么安装360安全卫士?
  20. Git 删除 GitHub仓库的文件——详细操作 githua如何删除文件

热门文章

  1. 微信小程序背景图片设置和图片自适应宽高
  2. bui ajax,BUI 数据交互
  3. 互联网+风口直吹传统银行能否漫步起舞
  4. elementui 上传七牛_用element ui上传图片到七牛踩过的坑
  5. Xshell远程服务器tensorboard/visdom的本地可视化方法【亲测一步有效】
  6. python判断字符串相等_如何在python语言中判断两个变量或字符串相等
  7. [js]点击更换背景颜色/图片
  8. EAP 认证 五元组转换三元组算法实现
  9. 详解贝叶斯(一):贝叶斯概率
  10. 如何查看Crontab任务是否执行