Java中如何优雅的把Map转为对象
对于一个Map我们如何把它转成对应的对象呢,其实方法很多,我之前用的比较多的是通过JSON转换,如下:
public class Person {private String userName;private int age;public String getUserName() {return userName;}public int getAge() {return age;}public void setUserName(String userName) {this.userName = userName;}public void setAge(int age) {this.age = age;}
}
public static void main(String[] args) {Map<String,Object> source=new HashMap<>();source.put("userName","张三");source.put("age",1);//map转为对象Person person = JSONObject.parseObject(JSONObject.toJSONString(source), Person.class);System.out.println(JSONObject.toJSONString(person));}
但是这样总是感觉效率不高,所以就自己写了下面这个小工具类,效率翻倍,工具类如下:
public class MapToObj {/*** 把source转为target* @param source source* @param target target* @param <T> 返回值类型* @return 返回值* @throws Exception newInstance可能会抛出的异常*/public static <T> T mapToObj(Map source,Class<T> target) throws Exception {Field[] fields = target.getDeclaredFields();T o = target.newInstance();for(Field field:fields){Object val;if((val=source.get(field.getName()))!=null){field.setAccessible(true);field.set(o,val);}}return o;}}
使用方式:
public static void main(String[] args) throws Exception {Map<String,Object> source=new HashMap<>();source.put("userName","张三");source.put("age",1);//map转为对象Person person = MapToObj.mapToObj(source,Person.class);System.out.println(JSONObject.toJSONString(person));}
效果:
Java中如何优雅的把Map转为对象相关推荐
- java中list,set,map集合的区别,及面试要点
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java中Array、List、Map相互转换
引言: 在实际项目开发中或者一些算法面试题目中经常需要用到Java中这三种类型的相互转换,比如对于一个整型数组中寻找一个整数与所给的一个整数值相同,正常情况下第一反应会想到用for循环直接遍历这个数组 ...
- java map byte[],java中byte数组不能作为map的key使用
今天在使用java写代码的时候,用byte数组作为map的key来使用,发现在遍历的时候get到之前传进去的值总是为空,很是困惑,后来查了下资料发现java中的字节数组不能直接作为map的key来使用 ...
- Java中如何遍历List , Set, Map
Java中 List , Set 有共同的父类, 就是Collection. 所有实现Collection的接口的类都有一个iterator方法,用以返回一个Iterator接口的对象. Itera ...
- Java中的数据存储方法——Map:key-value
package day05;import java.util.HashMap; import java.util.Map;/*** java.util.Map* Map看起来像是一个多行两列的表格.* ...
- Java中List,Set和Map详解及其区别和使用场景(转)
Java中的集合包括三大类,它们是Set(集).List(列表)和Map(映射),它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashS ...
- Java中 List、Set、Map 之间的区别
小博此篇记录了开发过程中常用的几种集合详解,三者的区别对比均从IDEA相关层次图里面所得知,基于JDK8,如有错误欢迎批评指正. List(列表) List的元素以线性方式存储,可以存放重复对 ...
- java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象
在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容 public Abstr ...
- 四十三、深入Java中的数组流,数据流和对象流操作
@Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
最新文章
- Eclipse 每行 79 字符限制的提示线
- js 将图片置灰_JS 上传一张图片让其部分变灰色
- Java EE 8 MVC:使用路径参数
- WordPress 简洁好看hankin透明主题
- 【JSP开发】有关session的一些重要的知识点
- Oracle执行计划稳固
- 系统签名缺少libconscrypt_openjdk_jni.so解决
- 巩固——Vue中proxyTable代理接口的配置
- redis与mysql性能对比、redis缓存穿透、缓存雪崩
- python udp
- L298N电机驱动模块的使用
- 历年计算机考研复试_重点面试题
- 这一篇彻底说清楚了!乐高,编程,机器人到底要不要学?
- visio2013(64位)
- 【有效】vscode中markdown导出pdf报错解决: ERROR: Navigation Timeout Exceeded: 30000 ms exceeded
- 考公 | 粉笔网课笔记——数量 刘凯
- ECharts中使用tooltip时鼠标移入抖动问题
- Unity 百度智能对话API
- 关于 麒麟系统启动应用报错“undefined symbol: __cxa_throw_bad_array_new_length, version Qt_5“ 的解决方法
- jpg转bmp操作方法
热门文章
- CDR X8中的图框精确剪裁不见了,怎么找回?
- 微软独家付费功能,也被完美解锁了
- WebRTC Tutorial For Beginners
- 解析 GetRerootedSIL
- 增值税合理税筹,享受政策税收奖励返还,高达85%!
- 计算机1级考试试题ps,计算机一级《PS》考试及基础习题与答案
- openfire linux 启动,Openfire的启动过程与session管理
- 2013 duilib入门简明教程 -- 总结 (20)
- 上海内推 | 商汤科技招聘计算视觉算法实习生
- 计算机二级office几个答题,全国计算机二级Ms Office科目答题顺序指导