Java对象与map对象相互转换/**

* 使用org.apache.commons.beanutils进行转换

*/

class A {

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);

}

}

/**

* 使用Introspector进行转换

*/

class B {

public static Object mapToObject(Map map, Class> beanClass) throws Exception {

if (map == null)

return null;

Object obj = beanClass.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;

}

public static Map objectToMap(Object obj) throws Exception {

if(obj == null)

return null;

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;

}

}

/**

* 使用reflect进行转换

*/

class C {

public static Object mapToObject(Map map, Class> beanClass) throws Exception {

if (map == null)

return null;

Object obj = beanClass.newInstance();

Field[] fields = obj.getClass().getDeclaredFields();

for (Field field : fields) {

int mod = field.getModifiers();

if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){

continue;

}

field.setAccessible(true);

field.set(obj, map.get(field.getName()));

}

return obj;

}

public static Map objectToMap(Object obj) throws Exception {

if(obj == null){

return null;

}

Map map = new HashMap();

Field[] declaredFields = obj.getClass().getDeclaredFields();

for (Field field : declaredFields) {

field.setAccessible(true);

map.put(field.getName(), field.get(obj));

}

return map;

}

}

java vo转map_Java对象与map对象相互转换相关推荐

  1. Java 读取 JSON 文件转成 Map 对象

    Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...

  2. java复杂map转json_转换复杂的JSON对象为 Map对象

    packagecom.test;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjav ...

  3. jsonobject返回map_如何把JSON对象转为map对象

    如何把JSON对象转为map对象呢? JSON 对象保存在大括号内.就像在JavaScript中, 对象可以保存多个 键/值 对.Map对象保存键/值对,是键/值对的集合.任何值(对象或者原始值) 都 ...

  4. python中的map对象_python map对象

    工作中遇到需要将List对象中的元素(list类型)转化为集合(set)类型,转化完成之后需要需要访问其中的元素. 第一步,使用map方法进行转换 data = [[1, 3, 4], [2, 3, ...

  5. java cglib map转bean_Java工具集-Bean对象与Map集合相互转换工具

    代码示例 package com.simple.util.bean; import org.springframework.cglib.beans.BeanMap; import java.util. ...

  6. java vo转map_JAVA Map转换为Bean或VO

    JAVA Map 转换为 Bean 或 VO Java.util 中的集合类包含 Java 中某些最常用的类. Map 提供了一个更通用的元素存储方 法. Map 集合类用于存储元素对(称作 &quo ...

  7. java vo转map_Java后端必备的开发规范

    点击上方 蓝字 加关注吧 作者:silianpan juejin.im/post/5ada99fff265da0b8a672fbd 基于阿里巴巴JAVA开发规范整理 https://github.co ...

  8. java foreach 遍历map_Java中遍历Map

    Java中的map遍历有多种方法,如最早的Iterator,Java5支持的foreach,Java8 Lambda. 先初始化一个map public class TestMap { public ...

  9. java foreach 遍历map_java中遍历map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

最新文章

  1. 使用临界区 CRITICAL_SECTION 实现互斥
  2. 文巾解题 面试题 01.06. 字符串压缩
  3. 怎么把分钟转化成秒_自定义简洁大方的Latex Beamer theme(主题) 及如何用 Vim 3分钟制作一个幻灯片...
  4. tensorflow学习(6.Alexnet实现及猫狗分类)
  5. 【python数据挖掘课程】二十九.数据预处理之字符型转换数值型、标准化、归一化处理
  6. java ssm使用存储过程_java调用oracle存储过程(ssm)
  7. [转]docker入门(利用docker部署web应用)
  8. 小米刷第三方recovery_小米平板4/Plus LTE版本开启电话功能
  9. mysql workbench安装出错_MYSQL及MySQL WORKBENCH安装过程遇到的问题及处理方法
  10. java 性能测试文档模板_最好用的数据库文档生成工具
  11. 别人问了个问题:有没有选择JAVA开发的设计文档
  12. 浪潮ERP-PS异速联远程接入解决方案
  13. 联想笔记本prtsc不能截图_笔记本上Fn+PrtSc 组合键无法调出截屏工具 Fn和Ctrl功能怎么交换...
  14. elasticsearch 如何清理过期的数据
  15. 刀塔自走棋上线不到十分钟就被功击,几十万玩家登录不上
  16. SVN各个状态:A C D M G U R I具体含义
  17. luoguP4313 文理分科
  18. 无法解析的外部符号 Direct3DCreate9@4
  19. C++的名字空间(很重要)
  20. 智慧建筑的几个常见误区

热门文章

  1. 1.5 基础数据类型 -- 字典与集合
  2. 使用spring cache和ehcache之前必须了解的
  3. 白话设计模式--行为型模式--Template Method模式(模板方法模式)
  4. Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug
  5. 计算机系统的优化具体操作,win7系统优化提升低配置电脑运行速度的详细技巧...
  6. php算法两数之和 复杂度,每天一道leetcode算法题:两数之和-php版
  7. matlab abc to dq0仿真,逆变器负载论文,关于基于同步旋转坐标的三相逆变器控制系统仿真相关参考文献资料-免费论文范文...
  8. 怎么将py文件转成dll_怎样将PDF文件转成CAD图纸?
  9. Python爬取并简单分析2024年普通高校招生专业(专业类)选考科目要求
  10. Python+sklearn使用线性回归算法预测儿童身高