Java 对象转Map,Java Map转对象方法
Java 对象转Map,Java Map转对象方法
import com.alibaba.fastjson.JSON;
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map; public class UserInfo {
private String userName;
private String idNo;
private String mobile;
private String sign; public String getSign() {
return sign;
} public void setSign(String sign) {
this.sign = sign;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getIdNo() {
return idNo;
} public void setIdNo(String idNo) {
this.idNo = idNo;
} public String getMobile() {
return mobile;
} public void setMobile(String mobile) {
this.mobile = mobile;
} private static Map<String, String> objectToMap(Object object) {
Map<String,String> map = new HashMap<>();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
map.put(field.getName(), String.valueOf(field.get(object)));
}catch (Exception e) {
e.printStackTrace();
}
}
return map;
} public static void mapToObject(Map<String, Object> map, Object obj) throws Exception {
if (map == null) {
return;
}
Class<?> cls = obj.getClass();
for (Field field : cls.getDeclaredFields()) {
String name = field.getName();
Object value = map.get(name);
if (value != null) {
field.setAccessible(true);
field.set(obj, value);
}
}
} public static void main(String[] args) {
UserInfo userInfo = new UserInfo();
userInfo.setMobile("19966667777");
userInfo.setUserName("张三");
userInfo.setIdNo("463300122545556699");
//对象转map1={mobile=19966667777, sign=null, userName=张三, idNo=463300122545556699}
Map map1 = objectToMap(userInfo);
System.out.println("对象转map1=" + map1); UserInfo user1 = new UserInfo();
try {
mapToObject(map1,user1);
} catch (Exception e) {
e.printStackTrace();
}
//map1转对象={"idNo":"463300122545556699","mobile":"19966667777","sign":"null","userName":"张三"}
System.out.println("map1转对象=" + JSON.toJSONString(user1)); String json = JSON.toJSONString(userInfo);
Map map2 = JSON.parseObject(json,Map.class);
//对象转map2={mobile=19966667777, userName=张三, idNo=463300122545556699}
System.out.println("对象转map2=" + map2); String json2 = JSON.toJSONString(map2);
UserInfo user2 = JSON.parseObject(json2,UserInfo.class);
//map2转对象={"idNo":"463300122545556699","mobile":"19966667777","userName":"张三"}
System.out.println("map2转对象=" + JSON.toJSONString(user2)); Map<String, String> map3 = null;
try {
map3 = BeanUtils.describe(userInfo);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
//对象转map3={mobile=19966667777, sign=null, userName=张三, class=class com.example.core.mydemo.scooter.UserInfo, idNo=463300122545556699}
System.out.println("对象转map3=" + map3); // Map map4 = new HashMap();
// BeanMap map4 = new BeanMap(userInfo);
UserInfo testObj = new UserInfo();
try {
BeanUtils.populate(testObj,map3);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//map3转对象={"mobile":"19966667777","userName":"张三","idNo":"463300122545556699"}
System.out.println("map3转对象=" + JSON.toJSON(testObj)); }
}
需要引入的jar包文件:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.1</version>
</dependency>
Java 对象转Map,Java Map转对象方法的更多相关文章
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
为了序列化原生的容器对象例如 List 和 Map 对象,你必须使用 Template. Template 对象是 serializer 和 deserializer 的配对.例如,为了序列化一个 ...
- JDK8stream将list转Map对象报错java.lang.IllegalStateException
JDK8有很多新特性,比如lambda表达式,函数式编程以及stream流的使用,这几个新特性,使用过之后就爱不释手了,比如将list集合通过stream可以直接转换成map对象. 语法: Map ...
- Java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
对象转换为Json 对象bean转换为Json List集合转换为Json 对象数组转换为Json Map集合转换为Json Set集合转为Json 字符串转换为Json 把Java对常用的一些数据转 ...
- 在JavaScript 自定义对象来模拟Java中的Map
直接看代码: //模拟一个Map对象 function Map(){ //声明一个容器 var container={}; //定义一个put方法,向容器中存值 this.put=function(k ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java的容器类Collection和Map
一,概念 JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. java的容器类一共有两种主要类型,Colllection和Map. 两者的区别是:Collection是单个元素,而Map是存 ...
- java 深入技术六(Map)
Map 1.map概述 map.put(key,value)里面存放的是两个相关的数据,key=value键值对 Map集合中存放的是键值对(put(key,value)),用get(key)获取集合 ...
- Map java中的map 如何修改Map中的对应元素
Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map ...
- Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A
第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ...
随机推荐
- 大型 Web 应用插件化架构探索
简介: 随着 Web 技术的逐渐成熟,越来越多的应用架构趋向于复杂,例如阿里云等巨型控制台项目,每个产品下都有各自的团队来负责维护和迭代.不论是维护还是发布以及管控成本都随着业务体量的增长而逐渐不可控 ...
- [Py] Python 的 shape、reshape 含义与用法
shape 方法用于查看数据是几行几列的. reshape 方法用于不更改数据的情况下,重新把数据进行规划成指定的行数和列数. .reshape(-1, 1) -1 表示自动,1 表示整理成 1 列 ...
- Pinpoint对k8s关键业务模块进行全链路监控(17)
一.全链路监控概述 1.1 什么是全链路监控 在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中 的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开 ...
- 【Buildroot】使用记录
一.概述 之前只使用过 busybox,每次配置完 roots 文件时,只具备一些基础的工具,像移植 QT 之类的就显得很麻烦.直到现在接触到了 Buildroot,才发现配置工具可以这么简单,对于自 ...
- vue通过input选取图片,jq的ajax向服务器上传img
<template> <div class=""> <!-- 选择后预览 --> <img v-if="im ...
- Oracle和达梦:查询系统表、系统表字段
1.查询系统表 当前模式下所有的表 可以查询到:表名.表注释 select * from user_tab_comments where TABLE_TYPE = 'TABLE' 2.查询系统表字段 ...
- python3解析FreeSWITCH会议室列表信息
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.12 进行FreeSWITCH会议室相关功能开发过程中,会遇到需要解析会议室列表信息并进行 ...
- SpringMVC学习四(文件上传/拦截器)
1.文件上传 1.1预备工作,需要两个jar包(Fileupload) jar包下载路径: [点击下载https://github.com/suyirulan/putao/tree/master/fi ...
- 如何基于surging跨网关跨语言进行缓存降级
概述 surging是一款开源的微服务引擎,包含了rpc服务治理,中间件,以及多种外部协议来解决各个行业的业务问题,在日益发展的今天,业务的需求也更加复杂,单一语言也未必能抗下所有,所以在多语言行业解 ...
- 如何在 Ubuntu 服务器上安装桌面环境 (GUI)
先以VNC方式远程登录服务器 执行命令 sudo apt update && sudo apt upgrade # 选择1---使用tasksel安装 sudo apt install ...