Object 转Map,Map转Object方式总结

article/2025/10/11 13:12:18

商品业务对象定义:Product

Product product = new Product();
product.setId(1L);
product.setName("爱他美")
product.setProductDt("2022-03-16")

第一种:通过Alibaba Fastjson实现:

pom.xml 文件依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.66</version>
</dependency>
//Object转Map
Map map = JSONObject.parseObject(JSONObject.toJSONString(product), Map.class);
Map<String,Object> map = JSONObject.parseObject(JSON.toJSONString(product));
//Map转Object
Product productDto1 = JSON.parseObject(JSON.toJSONString(map), Product.class);
Product productDto2 = JSONObject.toJavaObject(JSON.toJSONString(map), Product.class);

第二种:通过SpringBoot自带 Jackso实现

一般情况下我们引入MVC,MVC里面帮我们引入了Jackso依赖

 <!-- springboot web(MVC)--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

最终的依赖:

ObjectMapper mapper = new ObjectMapper();
//对象转map
Map m = mapper.readValue(mapper.writeValueAsString(product), Map.class);
//map转对象
Product dto = mapper.readValue(mapper.writeValueAsString(m), Product.class);

 第三种:通过Apache common Bean工具类实现

Pom.xml文件依赖

<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version>
</dependency>
#使用org.apache.commons.beanutils.BeanMap进行转换,实现Bean转Map
Map<String, Object> map = new org.apache.commons.beanutils.BeanMap(product);#使用org.apache.commons.beanutils.BeanUtils将map转为对象
BeanUtils.populate(product, map);

 第四种: 通过反射实现

通过反射实现Bean 转Map

//Object转Map
public static Map<String, Object> getObjectToMap(Object obj) throws IllegalAccessException {Map<String, Object> map = new LinkedHashMap<String, Object>();Class<?> clazz = obj.getClass();System.out.println(clazz);for (Field field : clazz.getDeclaredFields()) {field.setAccessible(true);String fieldName = field.getName();Object value = field.get(obj);if (value == null){value = "";}map.put(fieldName, value);}return map;
}

通过反射实现Map转Bean

//Map转Object
public static Object mapToObject(Map<Object, Object> 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);if (map.containsKey(field.getName())) {field.set(obj, map.get(field.getName()));}}return obj;
}


http://chatgpt.dhexx.cn/article/KO1tvIyA.shtml

相关文章

使用PyQt打包命令pyinstall的几个问题

**问题1&#xff1a;**打包后无demo.spec文件 在windows下使用cmd界面打包时&#xff0c;可以将路径设置到目标文件目录&#xff0c;这样会生成demo.spec文件&#xff0c;方便后期改正软件。 问题2&#xff1a;打包好后提示如下错误&#xff1a; 解决办法&#xff1a;在demo.…

PyCharm打包失败及Pyinstall无法安装问题的解决

问题描述 Python的工程很多情况下需要打包成EXE文件&#xff0c;通过pyinstaller的工具进行打包&#xff0c;首先需 要安装PyInstaller的工具&#xff0c;然后再通过命令行进行打包&#xff0c;安装 PyInstaller 模块与安装其他 Python 模块一样&#xff0c;使用 pip 命令安装…

pyinstall 打包python3.7.1的exe反编译

pyinstall 打包python3.7.1的exe反编译 由于 pyinstall打包的EXE文件&#xff0c;被360认为可能有木马病毒&#xff0c;首先怀疑计算数机系统有毒。用360杀毒&#xff0c;病毒倒是查处了十几个&#xff0c;对于一个对计算机不是十分精通的人来说&#xff0c;只能按360的提示去做…

pyinstall打包多个.py文件成应用程序

Pyinstall打包多个.py文件成应用程序的方法&#xff1a; 这里成功打包了两个.py文件&#xff0c;一张图片&#xff0c;一个.h5文件 如图所示&#xff1a; 第一步&#xff1a;生成.spec文件 pyinstaller -c -D main.py -p image_handler.py这里main.py文件是主文件&#xff0…

解决python3.6中pyinstall打包失败的问题

环境&#xff1a;python 3.6 pyinstall 一开始用百度上的方法&#xff0c;直接执行python目录下的pyinstall.exe文件&#xff0c;很好用。 C:\WINDOWS\System32>C:\Users\hasee\AppData\Local\Programs\Python\Python36\Scripts\pyinstaller.exe F:\python_code_test\ren…

pyqt5 +pyinstall打造属于自己的桌面版程序(学习阶段)

网上关于pyqt5的教程特别少,终于东拼西凑,做出一点东西出来,很简单的小应用,便于上手学习。 pyqt5的主文件代码如下,代码特别多,也没怎么细分。大家可以参考下。github地址 pyinstall打包的一点小技巧送给大家。 取消生成程序doc窗口使用命令pyinstaller -F -i 图标路径 …

tkinter - 使用Pyinstall进行打包封装

1 需要安装 PyInstaller C:\Users\30818> pip install pyinstaller 2 将模块py文件打包成pyd 防止反编译暴露源代码 pyd是一个模块插件 可以通过 Import 来引入pyd文件 直接编译会提示二进制读取错误 2-1 安装cython pip install cython 2-2 在当前目录创建一个 set…

【踩坑日记(一)】: Pyinstall 打包.py文件 生成exe可执行文件

文章目录 Pyinstall 打包.py文件 生成exe可执行文件如何入坑&出坑Analysis 实例其他实例常用参数参考文档&#xff1a;Pyinstall 官方手册 Pyinstall 打包.py文件 生成exe可执行文件 原本认为很轻松的事情&#xff0c;结果花了近2个小时才搞定&#xff0c;值得记录下踩的坑…

Ubuntu 16.04 安装 Pyinstall

Ubuntu 16.04 安装 Pyinstall 预装环境 python3 version&#xff1a;3.5pip version&#xff1a;8.1 报错如下&#xff1a; 首先直接安装 pyinstall 报错&#xff0c;pip 版本过低&#xff0c;要升级版本使用 提供的命令升级 pip&#xff0c;但是开始套娃&#xff0c;一直循…

pyinstall 打包报错

关于使用pyinstaller 打包报错 我的python安装位置为 安装位置/usr/local/python3 关于我的报错环境属于linux 我的pyinstaller 是使用pip 安装的 pip install pyinstaller 在使用pycharm 打包的时候,报错 打包就告诉我缺少什么 关于python的 iso包 我当时有全磁盘搜索该文…

pyinstall exe打包详解

在学习和工作之中&#xff0c;想制作一些小工具&#xff0c;用python秃了一个晚上&#xff0c;拿到公司&#xff0c;发现要安装python才能用&#xff0c;看别人的博客看不懂&#xff0c;别急&#xff0c;一篇搞定。 一、pyinstaller安装 pyinstaller 是一个python库&#xff0…

pyinstall加密打包

这个工具打包真的是挺省事的&#xff0c;但是一旦涉及保护源码&#xff0c;那么原来简单的打包就不够用了。轻易就能被人反编译。 工具自然也是要进步的&#xff0c;现在pyinstall支持加密打包了。 虽然我没查到他加密的原理是什么&#xff0c;但是应该比原来破解增加了一些难度…

PyInstall的安装,使用,以及最后打包成一个exe文件

首先PyInstall安装 pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com 打包常用命令 pyinstaller -w -F test.py -w 表示运行exe文件后不出现cmd命令窗口 -F 表示打包成一个单独的exe文件 使用命令后会生成两个文件夹。 …

WIFI传输速度测试

环境&#xff1a; 1.A电脑共享文件&#xff0c;有线1000M&#xff0c;空载&#xff0c;正常机械硬盘&#xff0c;硬盘速度120M/S 2.B电脑从A拷贝数据&#xff0c;USB1.5米延长线接的网卡&#xff0c;USB2.0&#xff0c;WIFI 5G 600M&#xff0c;空载 3.拷贝文件&#xff0c;阿凡…

诺基亚N1 WIFI感叹号消除

Android Captive Portal Server 安卓系统wifi连接后&#xff0c;与CPS服务器通信&#xff0c;检测是否连接到互联网&#xff0c;当不能默认的CPS时就会有感叹号。 通过ADB设置可以消除这个感叹号。 下好ADB之后&#xff0c;打开ADB文件夹&#xff0c;按住shift鼠标右键&…

WIFI理论速度计算

参考&#xff1a; https://cn.ui.vmall.com/thread-1349237-1-4.html 以下是各个WIFI版本的最大吞吐量表 wifi802.11802.11a802.11b802.11g802.11n802.11ac最大吞吐量(Mbps)25411546006928 强调下&#xff0c;MbpsMbit/s即兆比特每秒&#xff08;1,000,000bit/s&#xff09;不…

Android 修改wifi阀值,6种简单方法使WiFi网络提速

6种简单方法使WiFi网络提速 导语:不给力的WiFi连接使得无线上网给人的感觉像是回到了拨号时代。以下是小编精心整理的有关电脑网络知识,希望对大家有所帮助。 1、升级过时的路由器 并非所有人都愿意花钱解决WiFi网速慢的问题,但许多人都需要这么做。最近数年路由器技术取得了…

WIFI 常识

DSSS (Direct Sequence Spread Spectrum)直接序列扩频 FHSS&#xff0c;跳频技术 (Frequency-Hopping Spread Spectrum) FHSS和DSSS比较 跳频扩频&#xff08;FHSS&#xff09;: 跳频扩频&#xff08;FHSS&#xff09;技术是通过“伪随机码”的调制&#xff0c;信息的载波受…

Win10系统正确设置MTU值加快WIFI速度的方法

MTU是Maximum Transmission Unit缩写&#xff0c;中文名&#xff1a;最大传输单元。 工具/原料 硬件&#xff1a;电脑 操作系统&#xff1a;Windows 10 方法/步骤 第一步&#xff1a;查询自己电脑的MTU值 右键【开始】–【命令提示符(管理员)】&#xff1b; netsh interface …

WiFi的真实速率

“虽然许多路由器厂商宣称自家的路由器可以达到极高的速率&#xff0c;但实际上用户购买回去用起来却很难达到很快的速率。因为WiFi传输速率是符合木桶效应的&#xff0c;许多时候速率受限于接入路由器的WiFi终端性能。只有全链路能够达到的速率&#xff0c;才是使用者感受到的…