Java 功能篇之 Object 转Map

2023-10-27

工具类源码:

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MapTransPojo {
public static final Logger log = LoggerFactory.getLogger(MapTransPojo.class);
	
	public static Map<String,Object> PojoTransMap(Object obj){
		 Map<String, Object> map = new HashMap<String, Object>();
		 if (obj == null) {
			 return map;
		 }
		 // 获取当前类属性
		 Class clazz = obj.getClass();
		 Field[] fields = clazz.getDeclaredFields();
		 try {
			 for (Field field : fields) {
				 field.setAccessible(true);
				 if(field.get(obj) != null){
					 map.put(field.getName(), field.get(obj));					 
				 }
			 }
		 } catch (Exception e) {
			 log.error("MapTransPojo init error", e);
		 }	
		return map;
	}
	
	public static Map<String,Object> PojoTransMapSimple(Object obj){
		 Map<String, Object> map = new HashMap<String, Object>();
		 if (obj == null) {
			 return map;
		 }
		 Class clazz = obj.getClass();
		 Field[] fields = clazz.getDeclaredFields();
		 
		 try {
			 for (Field field : fields) {
				 field.setAccessible(true);
				 if(field.get(obj) != null){
					 map.put(field.getName(), SimpleTypeConverterUtil.convertIfNecessary(field.get(obj), field.getType()));
				 }
			 }
		 } catch (Exception e) {
			 e.printStackTrace();
		 }
		return map;
	}

/**
	 * Map转实体类
	 * @param map 需要初始化的数据,key字段必须与实体类的成员名字一样,否则赋值为空
	 * @param entity  需要转化成的实体类
	 * @return
	 */
	public static <T> T mapToEntity(Map<String, Object> map, Class<T> entity) {
		T t = null;
		try {
			t = entity.newInstance();
			for(Field field : entity.getDeclaredFields()) {
				if (map.containsKey(field.getName())) {
					boolean flag = field.isAccessible();
		            field.setAccessible(true);
		            Object object = map.get(field.getName());
		            if (object!= null && field.getType().isAssignableFrom(object.getClass())) {
		            	 field.set(t, object);
					}
		            field.setAccessible(flag);
				}
			}
			return t;
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return t;
	}

}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 功能篇之 Object 转Map 的相关文章

随机推荐

  • java基础错题总结

    1 解析 首先乘法的优先级高于加法 所以先进行y z 然后在这里 是连接符 因为头一个是字符串所以系统就认为是连接符 就成 10202 0 输出这个字符串 但如果第一个不是字符串类型的 就像 10 20 a 这个会输出 30 a 2 解析
  • gis中的加权求和工具在哪里_因果推理初探(5)——干预工具(上)

    本节将延续上一节学习的干预的有关概念 开始深入介绍几种干预的工具 后门调整 前门调整 逆概率加权等 本节将有大量公式来袭 请准备草稿纸或提前绕道 在上一节最后 我们推导出有关干预的重要公式 调整公式 它的形式如下 这个公式让我们可以通过观测
  • 为什么使用代理后不能上网了?

    在使用完代理服务器之后 有的用户可能会遇到这样的问题 明明网络正常 为什么我的浏览器不能打开网页了 今天就给大家说下具体解决方法 这里我们以IE浏览器为例 1 先打开浏览器 点击右上角的 工具 图标 然后点击下拉中的 Internet选项
  • elasticsearch中文分词器插件elasticsearch-analysis-ik远程自定义词典热更新

    IK简介 IK分词器基于词库进行分词 analysis ik内置了一些词典 主词典main dic 姓氏词典surname dic 量词词典quantifier dic 后缀词典suffix dic 介词词典preposition dic
  • vue项目创建

    默认3 默认2 自定义配置 js语法编辑器 ts 渐进式web应用程序 路由 状态管理器 css处理器 代码检查 单元测试 端对端测试 选择版本 路由是否选择历史模式 选择css预处理器 配置放在哪里 保存这个项目作为一个模版使用 npm
  • 【网络】Linux网络问题汇总(一)

    网卡设置了静态获取 仍然获取动态IP的解决方法 问题展示 网卡配置静态方式获取 仍然通过dhcp获取到了ip 且每次分配的ip都一样 root senlian cat etc sysconfig network scripts ifcfg
  • OAUTH之 钉钉第三方授权登录

    文章目录 OAUTH之钉钉第三方授权登录 前期用到的工具 获取access token 请求地址 请求方法 响应 扫码 使用账号密码 获取 临时 code 参数重要说明 直接访问 扫码登录 使用账号密码登录第三方网站 根据 sns 临时授权
  • 性能测试度量指标

    1 响应时间 响应时间指从用户或事务在客户端发起一个请求开始 到客户端接收到从服务器端返回的响应结束 这整个过程所消耗的时间 在性能测试实践中 为了使响应时间更具代表性 响应时间通常是指事务的平均响应时间ART 在实践中要注意 不同行业 不
  • node+koa2+mongodb搭建RESTful API风格后台

    RESTful API风格 在开发之前先回顾一下 RESTful API 是什么 RESTful 是一种 API 设计风格 并不是一种强制规范和标准 它的特点在于请求和响应都简洁清晰 可读性强 不管 API 属于哪种风格 只要能够满足需要
  • Unity之URP开启PostProcessing后使用RenderTexture渲染模型背景为不透明

    项目需要在UI界面显示角色模型 使用一个模型相机投射到RT上然后放在Raw Image上 现在这个模型相机需要开启后处理Post Processing 只针对模型添加了后处理效果 问题是开启后 Raw Image背景变了 把UI背景图遮住了
  • TensorFlow找不到cudart64_110.dll not found的解决方案

    问题描述 当我写了两句小程序准备开启我的TensorFlow之路时候 import tensorflow as tf hello tf constant hello tensorflow print Hello python sess tf
  • 安防监控视频云存储平台EasyNVR对接EasyNVS时,一直不上线该如何解决?

    视频安防监控平台EasyNVR可支持设备通过RTSP Onvif协议接入 并能对接入的视频流进行处理与多端分发 包括RTSP RTMP HTTP FLV WS FLV HLS WebRTC等多种格式 近期有用户在使用安防视频平台EasyNV
  • STLvector源码——实现框架、具体实现的详细分段剖析(重点是insert_aux在指定位置插入元素和在指定位置插入n个元素的源码)、vector实现的基本函数总结

    VS2010的源码真的让人放弃 还是安安稳稳看侯捷老师的SGI 源码 SGI vector 实现框架 include
  • Vue语言基础——ECMAScript 6.0

    ECMAScript 1ES6基础 1 1ES6简介 1 2let命令 1 3const命令 2 变量的结构赋值 2 1数组的解构赋值 2 2对象的解构赋值 2 3解构赋值的主要用途 3 箭头函数 3 1箭头函数的定义 3 2箭头函数与解构
  • Feign的使用及原理剖析

    feign使用及原理剖析 一 简介 Feign是一个http请求调用的轻量级框架 可以以Java接口注解的方式调用Http请求 Feign通过处理注解 将请求模板化 当实际调用的时候 传入参数 根据参数再应用到请求上 进而转化成真正的请求
  • MAC下配置PHPMyAdmin

    最近需要用到MySQL 用到了客户端的管理工具 PHPMyAdmin 一 配置Apache 在 Mac OS中PHP apache 环境是自带的 不需要单独下载安装包 只需要简单配置一下即可 首先打开终端输入命令 sudo vim etc
  • 使用Mac终端给文件夹加密压缩

    首先进入文件目录cd Desktop 否则的话 压缩出来的文件会包含长长的文件路径 就像下面这样 zip er zip file name file name zip file name 是即将要生成的zip包的名字 当前路径下是不存在的
  • ubuntu16.04配置以太坊环境

    没有guo审 放了图片 我尽力了 希望大家都能够不走弯路
  • 记一次网关项目Actuator未授权访问漏洞的修复方案

    前言 公司项目在做等保测评的时候发现网关项目存在Actuator未授权访问漏洞 在 Actuator 启用的情况下 如果没有做好相关权限控制 非法用户可通过访问默认的执行器端点 endpoints 来获取应用系统中的监控信息 从而导致信息泄
  • Java 功能篇之 Object 转Map

    工具类源码 import java lang reflect Field import java util HashMap import java util Map import org slf4j Logger import org sl