bean 与 map 互转.

阿粉带你彻底解决开发中对象Bean与Map互转问题! 一、摘要 在实际开发过程中,经常碰到需要进行对象与map之间互转的问题,其实对于对象、Map 之间进行互转有很多种方式,下面我们一起来梳理一下:利用 JSON 工具包,将对象转成字符串,... 阅读详情
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;
    }
}
Java Bean与Map互转技术解析 在现代Java应用程序中,数据交换和处理是不可或缺的部分。Java Bean与Map作为两种常见的数据结构,在不同场景下发挥着各自的优势。Java Bean作为一种规范,其结构化和面向对象的特性使得它在业务逻辑层和持久化层中应用广泛。Map则以其灵活和快速的特点,在处理键值对数据时表现出色。然而,Java Bean与Map在结构和用途上存在差异,这就需要在不同场景下对它们进行相互转换,以满足业务需求。 阅读详情

相关推荐

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...

Java知音 1824

【WILEY】wiley期刊投稿详解:从revision到Accepted全流程实例讲解

注意:包括没标注修改位置的word文件和标注了修改位置的word文件。

Everyday try to become better -Kobe Bryant 1万+

如何优雅的map与bean互转

如何优雅的map与bean互转 起因 我的一个朋友,问我如果你想map和bean互转的话,你会怎么做。其实就是想炫耀他的那个bean和map互转的技术。 我当时想的是,通过反射?手动写?通过json互转?类比lombok,Mapstruct,编译增强? 反射效率低,手写的话,重复代码太多了,不想写。虽然可以用逆向代码生成器生成加快一点。 通过josn就更慢了,而编译增强的话,执行的时候,本质还是普通的代码执行,所以速度没问题,而又没有手写的繁琐。 然后他向我分享了他的一个demo。https://githu

Wzy000001的博客 766

别再被手机厂商忽悠了!一文看懂光学变焦、数字变焦和混合变焦到底有啥区别

本文深入解析手机摄影中的光学变焦、数字变焦和混合变焦技术,揭示它们的工作原理和实际效果差异。光学变焦保持无损画质,数字变焦依赖算法放大,而混合变焦结合两者优势。帮助消费者识破厂商宣传,根据实际需求选择最适合的变焦方式,提升拍摄质量。

weixin_28717969的博客 413

单片机OTA升级:Bootloader如何多重校验保障APP完整性?

本文详细介绍了单片机OTA升级中Bootloader如何通过CRC校验、数字签名、版本比对和存储位置检查等多重校验机制保障APP完整性。CRC校验作为快速检测数据完整性的核心手段,结合其他安全措施有效防止设备变砖和安全漏洞,确保远程升级的可靠性。

l3m4n的博客 981

编码技巧——Bean转换工具MapStruct

业务开发过程中,经常会遇到各种实体之类的转换,JSON转换,Map转换,属性赋值填充,这里整理几个常用的工具,提升效率。

娜娜米的博客 2117

Cesium实战:3DTiles模型分层分户抽屉效果实现全攻略(附完整代码)

本文详细解析了在Cesium中为3DTiles模型实现分层分户抽屉效果的核心原理与完整代码。通过“主-副双模型”策略,结合属性过滤与矩阵变换,开发者能够创建出可交互、可探索的动态建筑可视化效果,适用于数字孪生、智慧城市及BIM可视化等场景。

d6e7f8g9h的博客 295

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...

SURLIYA的博客 439

笔试题-2023-芯动-数字IC设计【纯净题目版】

笔试题-2023-芯动-数字IC设计【纯净题目版】

w0shishabi的博客 6397

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2100

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...

liuno0的博客 458

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12

不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1341

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...

lisheng19870305的专栏 1919

【VS Code插件开发】通用功能(二)

本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。

编码世界 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用Jackson实现Map与Bean互转

在使用 java 开发中,通常需要把 Map 转成 Bean,或把 Bean 转成 Map,这就用的工具类,在此推荐使用import com.fasterxml.jackson.databind.ObjectMapper;包下的ObjectMapper类,比 JsonObject 效率高,下面就列举了几种使用方法。 pom.xml<dependency> <grou...

好记性不如烂笔头 1万+

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...

chuangfuli5617的博客 154

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

S___Lei的博客 248

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...

weixin_30247159的博客 338

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 ...

子游丶 2917

Map与Bean互转

【代码】Map与Bean互转。

TM_enn的博客 2648

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

用优雅的代码铺通往成功的路 4138

Java中Map与bean互转

使用Jackson库进行Map与Bean的相互转化

fxtxz2的专栏 4173

通过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...

星光似霰 373

常用的map转bean互转方法

还得是成熟的工具类啊,手写吧,还没别人的还用

qq_37700773的博客 1万+
上一篇: RedisService
下一篇: Http请求 post get
杜引强
博客等级 码龄13年 806粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值