这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)实现实体类转地图、地图转实体类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
实体类转Map、Map转实体类
1、创建entity(User.java)
包com。杰夫。实体;
公共类用户{
私有字符串用户名;
私有字符串密码;
私有整数年龄;
公共用户(){
super();
}
公共用户(字符串用户名、字符串密码、整数年龄){
super();
this .用户名=用户名;
this.password=密码;
this.age=年龄;
}
公共字符串getUserName() {
返回用户名;
}
公共void setUserName(字符串用户名){
this .用户名=用户名;
}
公共字符串getPassword() {
返回密码;
}
公共void setPassword(字符串密码){
this.password=密码;
}
公共整数getAge() {
回归年龄;
}
公共空的存储(整数年龄){
this.age=年龄;
}
@覆盖
公共字符串toString() {
返回"用户[用户名='用户名,密码='密码,年龄='年龄']";
}
}
2、创建utils(EntityUtils.java)
包com。杰夫。utils
导入Java。郎。反思。场;
导入Java。util。hashmap
导入Java。util。地图;
公共类EntityUtils {
/**
*
* @描述:实体类转地图
* @作者:杰夫
* @日期:2019年10月29日
* @param对象
* @返回
*/
公共静态映射字符串,对象实体映射(对象对象){
MapString,Object map=new HashMap();
for (Field field : object.getClass().getDeclaredFields()) {
尝试{
布尔标志=字段。可访问();
字段。设置可访问性(true);
对象o=字段。get(对象);
map.put(field.getName(),o);
场。设置可访问性(标志);
} catch(异常e) {
e。printstacktrace();
}
}
返回地图;
}
/**
*
* @描述:地图转实体类
* @作者:杰夫
* @日期:2019年10月29日
* @param T
* @param map需要初始化的数据,键字段必须与实体类的成员名字一样,否则赋值为空
* @param实体需要转化成的实体类
* @返回
*/
公共静态测试映射实体(映射字符串、对象映射、类实体){
T t=空
尝试{
t=实体。新实例();
for(字段字段:实体。getdeclaredfields()){
如果(图。包含键(字段。getname()){
布尔标志=字段。可访问();
字段。设置可访问性(true);
对象对象=贴图。获取(字段。getname());
如果(反对!=null field.getType().isAssignableFrom(对象。getclass())){
field.set(t,object);
}
字段。设置可访问性(标志);
}
}
return t;
} catch(实例化异常e){
e。printstacktrace();
} catch(IllegalAccessException e){
e。printstacktrace();
}
return t;
}
}
3、创建Map转实体类(TestCopyObj3.java)
包com .杰夫
导入Java。util。hashmap
导入Java。util。地图;
导入com。杰夫。实体。用户;
导入com。杰夫。utils。实体效用;
公共类TestCopyObj3 {
公共静态void main(String[] args)引发异常{
MapString,Object map=new HashMapString,Object();
map.put('用户名','杰夫');
map.put('密码',' 123456 ');
map.put('年龄',18);
System.out.println('Map对象:'地图);
用户用户=实体实用程序。映射到实体(映射,用户。类);
System.out.println('User对象:'用户);
}
}
4、控制台输出结果
5、创建实体类转Map(TestCopyObj4.java)
包com .杰夫
导入Java。util。地图;
导入com。杰夫。实体。用户;
导入com。杰夫。utils。实体效用;
公共类TestCopyObj4 {
公共静态void main(String[] args)引发异常{
用户用户=新用户(‘杰夫’,‘123456’,18);
System.out.println('User对象:'用户);
MapString,Object map=entity utils。要映射的实体(用户);
System.out.println('Map对象:'地图);
}
}
6、控制台输出结果
Map转实体类或List数组
因为做项目,需要取出复杂的地图里的价值转为实体类对象和列表,在博客里找了很久没有找到合适的方法,于是只能默默探索。
地图里包含了实体类,列表数组,还有普通的键值,取出我们想要的数据呢?直接取我是取不出来,后来想先转json,在从json里去出对象和列表,然后就这么干,废话少说,撸代码!
1.先添加maven依赖,这里用alibaba的
!-阿里巴巴json -
属国
groupIdcom.alibaba/groupId
artifactIdfastjson/artifactId
版本1 .2 .46/版本
/依赖关系
2.自己写的一个JsonUtil工具类
导入com。阿里巴巴。快速JSON。JSON
导入com。阿里巴巴。快速JSON。JSON数组;
导入com。阿里巴巴。快速JSON。JSON对象;
导入Java。util。列表;
导入Java。util。地图;
公共类JsonUtilT{
公共静态JSON对象mapToJson(MapString,Object map) {
字符串数据=JSON。tojsonstring(地图);
返回JSON.parseObject(数据);
}
/**
*地图中取键对应的价值
* @param map
* @param key
* @返回
*/
公共字符串mapToString(MapString,对象映射,字符串关键字){
JSON object JSON object=mapToJson(map);
返回JSON对象。getstring(key);
}
/**
*地图中取类对象
* @param map
* @param clazz
* @param key
* @param T
* @返回
*/
public static T T mapToObject(MapString,Object map,clazz,String key) {
T t=空
JSON object JSON object=mapToJson(map);
JSON对象object=JSON对象。getjson对象(key);
t=对象。tojavaobject(clazz);
return t;
}
/**
*地图中取目录
* @param map
* @param clazz
* @param key
* @返回
*/
public ListT mapToList(映射字符串,对象映射,分类,字符串关键字){
ListT t=null
JSON object JSON object=mapToJson(map);
JSON数组array=JSON对象。getjson数组(key);
t=数组。tojavalist(clazz);
return t;
}
}
3.用 postman 发送数据到后台
4.后台接收代码
@ request mapping(value='/subjects/subject ',method={RequestMethod .帖子})
公共结果添加主题(@请求正文映射字符串,对象映射){
//使用json
JSON util JSON util=new JSON util();
//获取科目对象
主题subject=JSON util。maptooobject(map,Subject.class,' subject ');
//获取目录数组
列表进度进度列表=JSON util。mapto列表(map,Progress.class,' progress ');
//获取键对应的值
string specid=JSON util。maptostring(map,' specid ');
//打印输出
系统。出去。println(主题);
对于(进度进度:进度列表){
系统。出去。println(进度);
}
系统。出去。println(specid);
返回空
}
5.后台输出
到此成功从地图里取出对象,列表,和键值
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。