package com.sprucetec.tms.distribute.utils;
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.HashMap;
import java.util.Map;
/**
* bean 与 map 互转.
*
* @author Yinqiang Du
* @date 2016/10/8
*/
public class BeanToMapUtil {
/**
* 将一个 Map 对象转化为一个 JavaBean
* @param type 要转化的类型
* @param map 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InstantiationException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
public static Object convertMap(Class type, Map map)
throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
Object obj = type.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);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, args);
}
}
return obj;
}
/**
* 将一个 JavaBean 对象转化为一个 Map
* @param bean 要转化的JavaBean 对象
* @return 转化出来的 Map 对象
* @throws IntrospectionException 如果分析类属性失败
* @throws IllegalAccessException 如果实例化 JavaBean 失败
* @throws InvocationTargetException 如果调用属性的 setter 方法失败
*/
public static Map convertBean(Object bean)
throws IntrospectionException, IllegalAccessException, InvocationTargetException {
Class type = bean.getClass();
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(type);
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 = readMethod.invoke(bean, new Object[0]);
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, "");
}
}
}
return returnMap;
}
}
相关推荐
map 和 bean 之间的转换
map 和 bean 之间的转换,可以利用反射的原理实现
重磅,MapStruct 1.5 发布,这次终于支持Map转为Bean了!
本月三号,MapStruct 1.5.0 Final发布,本次正式版距离上次正式版发布已经过去了快7年(上个正式版发布于2015年11月),此次发布除了修复了110多个bug外,还有以下新特性值得关注:支持了Map<String,?>到bean的转换支持更加完备的条件转换(Conditional mapping)支持子类之间的转换(Support for su...
【WILEY】wiley期刊投稿详解:从revision到Accepted全流程实例讲解
注意:包括没标注修改位置的word文件和标注了修改位置的word文件。
如何优雅的map与bean互转
如何优雅的map与bean互转 起因 我的一个朋友,问我如果你想map和bean互转的话,你会怎么做。其实就是想炫耀他的那个bean和map互转的技术。 我当时想的是,通过反射?手动写?通过json互转?类比lombok,Mapstruct,编译增强? 反射效率低,手写的话,重复代码太多了,不想写。虽然可以用逆向代码生成器生成加快一点。 通过josn就更慢了,而编译增强的话,执行的时候,本质还是普通的代码执行,所以速度没问题,而又没有手写的繁琐。 然后他向我分享了他的一个demo。https://githu
别再被手机厂商忽悠了!一文看懂光学变焦、数字变焦和混合变焦到底有啥区别
本文深入解析手机摄影中的光学变焦、数字变焦和混合变焦技术,揭示它们的工作原理和实际效果差异。光学变焦保持无损画质,数字变焦依赖算法放大,而混合变焦结合两者优势。帮助消费者识破厂商宣传,根据实际需求选择最适合的变焦方式,提升拍摄质量。
单片机OTA升级:Bootloader如何多重校验保障APP完整性?
本文详细介绍了单片机OTA升级中Bootloader如何通过CRC校验、数字签名、版本比对和存储位置检查等多重校验机制保障APP完整性。CRC校验作为快速检测数据完整性的核心手段,结合其他安全措施有效防止设备变砖和安全漏洞,确保远程升级的可靠性。
编码技巧——Bean转换工具MapStruct
业务开发过程中,经常会遇到各种实体之类的转换,JSON转换,Map转换,属性赋值填充,这里整理几个常用的工具,提升效率。
Cesium实战:3DTiles模型分层分户抽屉效果实现全攻略(附完整代码)
本文详细解析了在Cesium中为3DTiles模型实现分层分户抽屉效果的核心原理与完整代码。通过“主-副双模型”策略,结合属性过滤与矩阵变换,开发者能够创建出可交互、可探索的动态建筑可视化效果,适用于数字孪生、智慧城市及BIM可视化等场景。
Bean和Map互转
Bean和Map互转 import com.alibaba.fastjson.JSONObject; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.ut...
笔试题-2023-芯动-数字IC设计【纯净题目版】
笔试题-2023-芯动-数字IC设计【纯净题目版】
DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密
DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。
bean与map 互转
一个工具类,bean与map互转 import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTarget...
新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12
不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。
Bean和Map互转工具类-BeanMapUtils
package com.yung.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.cglib.beans.BeanMap; public class BeanMapUtils { pub...
【VS Code插件开发】通用功能(二)
本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
使用Jackson实现Map与Bean互转
在使用 java 开发中,通常需要把 Map 转成 Bean,或把 Bean 转成 Map,这就用的工具类,在此推荐使用import com.fasterxml.jackson.databind.ObjectMapper;包下的ObjectMapper类,比 JsonObject 效率高,下面就列举了几种使用方法。 pom.xml<dependency> <grou...
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Bean 与 Map 互转
原文在这:http://blog.csdn.net/cuidiwhere/article/details/8130434 记录一下,以后需要时直接复制,懒得写 方法一:使用org.apache.commons.beanutils.BeanUtils工具类,BeanUtils.populat...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
Map、Bean互转
1、创建注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.FIELD) ...
Java的xml与map,与Bean互转
xml与map互转,主要使用dom4j import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j...
Java中Map与Bean互转
package com.czx.springbootshiro.util; import org.apache.commons.beanutils.BeanUtils; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import ...
Map与Bean互转
【代码】Map与Bean互转。
map和bean互转工具
这个在项目里有时候很有用,map2bean和bean2map, 也有时候会用到json,也可以用gson的工具. package com.newnewbank.utils.bean; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import j
Java中Map与bean互转
使用Jackson库进行Map与Bean的相互转化
通过java反射实现map与bean之间互转
最近写接口规范时,规定用Map类型传递参数,因此写了一个Map和Bean互转的工具类。 主要技术利用java的反射。 import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; import java.util.lo...
常用的map转bean互转方法
还得是成熟的工具类啊,手写吧,还没别人的还用
1824



被折叠的 条评论
为什么被折叠?



