java中map与实体类的相互转换操作
java中map与实体类的相互转换
1. 在 pom.xml 中引入依赖包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency>
2. 在控制类中引入
import com.alibaba.fastjson.JSON;
3. 类型转换
JSON.parseObject(JSON.toJSONString(源数据), 转换后数据类型.class);
// 将 Map 转换为 实体类 User user = JSON.parseObject(JSON.toJSONString(user01), User.class); System.out.println(user); // 将 实体类 转换为 Map Map map = JSON.parseObject(JSON.toJSONString(user), Map.class); System.out.println(map);
4. 转换成功
将map转换为实体类的两种方法
今天写项目时需要把map中的值写到对应的实体类中去,以前在遇到同样的问题时因为需要的数据只要那么几个字段,所以通过get和set的方式感觉还行不是特别麻烦,而这次需要几乎所有字段,一共有十几个,如果还是才采用这用方式实在太麻烦。
查阅资料后发现了两个不错的方法
方法一
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.30</version> </dependency>
JSON.parseObject(JSON.toJSONString(Map<String, ? extends Object>), Class<T> bean);
通过fastjson先将map转换成json字符串,然后再将json字符串转换成实体类。
方法二
<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version> </dependency>
BeanUtils.populate(Object bean, Map<String, ? extends Object> map)
这个方法会遍历map<key, value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
分析Java并发编程之信号量Semaphore
目录 一.认识Semaphore 1.1.Semaphore 的使用场景 1.2.Semaphore 使用 1.3.Semaphore 信号量的模型 二.Semaphore 深入理解 2.1.Semaphore 基本属性 2.2.Semaphore 的公平性和非公平性 2.3.其他 Semaphore 方法 一.认识Semaphore 1.1.Semaphore 的使用场景 Semaphore 的使用场景主要用于流量控制,比如数据库连接,同时使用的数据库连接会有数量限制,数据库连接不能超过一定的
-
分析Java中Map的遍历性能问题
一.引言 我们知道java HashMap的扩容是有成本的,为了减少扩容的次数和成本,可以给HashMap设置初始容量大小,如下所示: HashMap<string, integer=""> map0 = new HashMap<string, integer="">(100000); 但是在实际使用的过程中,发现性能不但没有提升,反而显著下降了!代码里对HashMap的操作也只有遍历了,看来是遍历出了问题,于是做了一番测试,得到如下结果:
-
Java并发编程之详解ConcurrentHashMap类
前言 由于Java程序员常用的HashMap的操作方法不是同步的,所以在多线程环境下会导致存取操作数据不一致的问题,Map接口的另一个实现类Hashtable 虽然是线程安全的,但是在多线程下执行效率很低.为了解决这个问题,在java 1.5版本中引入了线程安全的集合类ConcurrentMap. java.util.concurrent.ConcurrentMap接口是Java集合类框架提供的线程安全的map,这意味着多线程同时访问它,不会影响map中每一条数据的一致性.ConcurrentM
-
Java源码解析之详解ImmutableMap
一.案例场景 遇到过这样的场景,在定义一个static修饰的Map时,使用了大量的put()方法赋值,就类似这样-- public static final Map<String,String> dayMap= new HashMap<>(); static { dayMap.put("Monday","今天上英语课"); dayMap.put("Tuesday","今天上语文课"); dayMap.p
-
Java8 中使用Stream 让List 转 Map使用问题小结
在使用 Java 的新特性 Collectors.toMap() 将 List 转换为 Map 时存在一些不容易发现的问题,这里总结一下备查. 空指针风险 java.lang.NullPointerException 当 List 中有 null 值的时候,使用 Collectors.toMap() 转为 Map 时,会报 java.lang.NullPointerException,如下: List<SdsTest> sdsTests = new ArrayList<>(); S
-
Java 将List中的实体类按照某个字段进行分组并存放至Map中操作
1.JDK1.8之前: 假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中.(例子不是很恰当,但很能说明问题) public static void main(String[] args) { List<User> list = new ArrayList<>(); list.add(new User(1, 1)); list.add(new User(1, 2)); list.add(new User(2, 1)); list.add(new
-
Java中HashMap的初始容量设置方式
Java中HashMap的初始容量设置 根据阿里巴巴Java开发手册上建议HashMap初始化时设置已知的大小,如果不超过16个,那么设置成默认大小16: 集合初始化时, 指定集合初始值大小. 说明: HashMap使用HashMap(int initialCapacity)初始化 正例: initialCapacity = (需要存储的元素个数 / 负载因子) + 1.注意负载因子(即loader factor)默认为0.75, 如果暂时无法确定初始值大小,请设置为16(即默认值). 反例:
-
深入理解Java中的HashMap
一.HashMap的结构图示 本文主要说的是jdk1.8版本中的实现.而1.8中HashMap是数组+链表+红黑树实现的,大概如下图所示.后面还是主要介绍Hash Map中主要的一些成员以及方法原理. 那么上述图示中的结点Node具体类型是什么,源码如下.Node是HashMap的内部类,实现了Map.Entery接口,主要就是存放我们put方法所添加的元素.其中的next就表示这可以构成一个单向链表,这主要是通过链地址法解决发生hash冲突问题.而当桶中的元素个数超过阈值的时候就换转为红黑
-
java中map与实体类的相互转换操作
java中map与实体类的相互转换 1. 在 pom.xml 中引入依赖包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency> 2. 在控制类中引入 import com.alibaba.fastjson.JSON; 3. 类型转
-
Java 通过反射给实体类赋值操作
表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了, 怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题. 所以就有了这样一个类,只需把request和实体类对象传进去就行了, 这样就会得到一个有值的实体类对象 下面是代码示例 import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Date; import ja
-
利用JAVA反射,读取数据库表名,自动生成对应实体类的操作
本代码是利用java反射,读取数据库表自动根据表名生成实体类,数据库采用老牌SQLSERVER 2000,驱动为JTDS,其他数据库可根据情况自定修改. 代码中包含了大部分数据库类型与JAVA类型的转换,少数未包含进去的会在生成代码时打印出来,方面后期查找修改. import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sq
-
Java如何实现实体类转Map、Map转实体类
实体类转Map.Map转实体类 1.创建entity(User.java) package com.jeff.entity; public class User { private String userName; private String password; private Integer age; public User() { super(); } public User(String userName, String password, Integer age) { super();
-
JS自定义对象实现Java中Map对象功能的方法
本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容! 这里Key,你要使用String类型,和Java一样,你可以进行一些增加,删除,修改,获得的操作. 使用很简单,我先把工具类给大家看下: 复制代码 代码如下: /** *
-
关于java中Map的九大问题分析
通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set..它们都可以通过构造方法或者addAll()方法来转换为List类型.下面代码就说明了如何从Map中构造ArrayList: // key list List keyList = new ArrayLi
-
如何在 Java 中实现不可变类
前言 面向对象的编程通过封装可变动的部分来构造能够让人读懂的代码,函数式编程则是通过最大程度地减少 可变动的部分来构造出可让人读懂的代码. - Michael Feathers,Working with Legacy Code 一文的作者 在这一部分中,我讨论的是函数式编程的基石之一:不变性.一个不可变对象的状态在其构造完成之后就不可改变,换句话说,构造函数是唯一一个您可以改变对象的状态的地方.如果您想要改变一个不可变对象的话,您不会改变它,而是使用修改后的值来创建一个新的对象,并把您的引用指向
-
java反射机制给实体类相同字段自动赋值实例
一.封装一个工具类 1.简易版 package net.aexit.construct.acceptance.websky.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ClassReflection { /** * @par
-
Java中Map的entrySet()使用说明
由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value Map.Entry里面包含getKey()和getValue()方法 Set<Entry<T,V>> entrySet() 该方法返回值就是这个map中各个键值对映射关系的集合. 可使用它对map进行遍历. Iterator<Map.Entry<Integer, Integer>> it=map.entrySet
随机推荐
- 如何在ASP.NET Core类库项目中读取配置文件详解
- 几款开源的中文分词系统
- 去掉RAR右键解压菜单的VBS代码
- Oracle9i 动态SGA,PGA特性探索
- Windows上使用virtualenv搭建Python+Flask开发环境
- java.util.ConcurrentModificationException 解决方法
- JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
- CentOS系统中PHP和MySQL的升级方法
- JavaScript验证18位身份证号码最后一位正确性的实现代码
- shell脚本学习指南[五](Arnold Robbins & Nelson H.F. Beebe著)
- Golang的循环中break和continue语句的用法讲解
- ajax提交到servelt获取参数有乱码的解决方法
- php实现把数组按指定的个数分隔
- 使用jQuery.fn自定义jQuery翻页插件
- 关于event.cancelBubble和event.stopPropagation()的区别介绍
- 修改Windows注册表系统文件为宽带加速
- c#异步操作后台运行(backgroundworker类)示例
- 智能表格
- java实现中缀表达式转后缀的方法
- Python实现聊天机器人的示例代码