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转对象方法的更多相关文章

  1. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. MessagePack Java 0.6.X List, Map 对象的序列化和反序列化

    为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template. Template 对象是 serializer 和 deserializer 的配对.例如,为了序列化一个  ...

  3. JDK8stream将list转Map对象报错java.lang.IllegalStateException

    ​ JDK8有很多新特性,比如lambda表达式,函数式编程以及stream流的使用,这几个新特性,使用过之后就爱不释手了,比如将list集合通过stream可以直接转换成map对象. 语法: Map ...

  4. Java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json

    对象转换为Json 对象bean转换为Json List集合转换为Json 对象数组转换为Json Map集合转换为Json Set集合转为Json 字符串转换为Json 把Java对常用的一些数据转 ...

  5. 在JavaScript 自定义对象来模拟Java中的Map

    直接看代码: //模拟一个Map对象 function Map(){ //声明一个容器 var container={}; //定义一个put方法,向容器中存值 this.put=function(k ...

  6. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  7. Java的容器类Collection和Map

    一,概念 JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. java的容器类一共有两种主要类型,Colllection和Map. 两者的区别是:Collection是单个元素,而Map是存 ...

  8. java 深入技术六(Map)

    Map 1.map概述 map.put(key,value)里面存放的是两个相关的数据,key=value键值对 Map集合中存放的是键值对(put(key,value)),用get(key)获取集合 ...

  9. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  10. 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; 要求完善设计,使得 ...

随机推荐

  1. WPF 自定义控件入门 Focusable 与焦点

    自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 默认情况下的自定义控件是没有带可获取焦点的功能的,例如编写一个继承 FrameworkElement ...

  2. WPF 自己封装 Skia 差量绘制控件

    使用 Skia 能做到在多个不同的平台使用相同的一套 API 绘制出相同界面效果的图片,可以将图片绘制到应用程序的渲染显示里面.在 WPF 中最稳的方法就是通过 WriteableBitmap 作为承 ...

  3. Apache Pulsar 桌面端图形化管理工具

    Apache Pulsar 桌面端图形化管理工具 Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储 ...

  4. 深入浅出玩转fPGA-读书笔记

    笔记1 关于异步复位同步释放的理解 先看代码: 其中有两个always语句,把2个触发器叠加,当按下复位信号rst_n是,两个触发器都复位(清零).当rst_n释放时,重点就来了,rst_n释放的时刻 ...

  5. C语言程序设计-笔记6-数组

    C语言程序设计-笔记6-数组 例7-1  输出所有大于平均值的数.输入n个整数(1 ),计算这些数的平均值,再输出所有大于平均值的数. #include<stdio.h> int main ...

  6. 一个随时跟新的css库

    1.一个选中阴影的样式 .select border: 1px solid #4d92f7; box-shadow: 0px 0px 15px rgba(0,50,122,.15); 2.一个三栏渐变 ...

  7. .NET CORE 完美支持AOT 的 ORM SqlSugar 教程

    1.AOT适合产场 Aot适合工具类型的项目使用,优点禁止反编 ,第一次启动快,业务型项目或者反射多的项目不适合用AOT AOT更新记录: 实实在在经过实践的AOT ORM 5.1.4.117 +支持 ...

  8. 深入学习和理解Django模板层:构建动态页面

    title: 深入学习和理解Django模板层:构建动态页面 date: 2024/5/5 20:53:51 updated: 2024/5/5 20:53:51 categories: 后端开发 t ...

  9. gin里获取http请求过来的参数

    https://www.bilibili.com/video/av68769981/?p=2 课程代码: https://www.qfgolang.com/?special=ginkuangjia&a ...

  10. Typora最后的免费版本0.11.18

    Typora最后的免费版本为0.11.18. 之后的1.x开始收费. 免费版本0.11.18的百度网盘链接如下(永久链接): 链接:https://pan.baidu.com/s/1XizAD0SFp ...