这篇文章主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中实现地图与对象相互转换的几种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
最近,研究地图与Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象之间的相互转换,总结了5种方法:
第一种:使用org.apache.commons.beanutils转换
用到的主要冲突包:commons-beanutils-1.9.3.jar
//地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象
公共静态对象mapToObject(MapString,对象映射,类?beanClass)
引发异常{
if (map==null) {
返回空
}
对象obj=bean类。新实例();
BeanUtils.populate(obj,map);
返回目标文件
}
//java对象转地图
公共静态地图?对象映射(对象对象){
if (obj==null)
返回空
返回新的bean map(obj);
}
在使用该方法进行Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象转地图时,可能会发生以下错误:
线程“主”Java。郎。noclassdeffounderror中出现异常:org/Apache/commons/collections/Transformer
在爪哇。郎。类别载入器。定义类别1(本地方法)
位于Java。郎。类别载入器。定义类(类加载器。Java:621)
位于Java。安全。安全类加载器。定义类(安全类加载器。Java:124)
位于Java。网。URL类加载器。定义类(URL类加载器。Java:260)
在Java。网。URL类加载器。访问$ 000(URL类加载器。Java:56)
位于Java。网。URL类加载器$1。运行(URL类加载器。Java:195)
在爪哇。安全。门禁控制器。特权(原生方法)
位于Java。网。URL类加载器。查找类(URL类加载器。Java:188)
位于Java。郎。类别载入器。加载类(类加载器。Java:307)
看着孙。杂项启动器$应用程序类加载器。加载类(启动器。Java:301)
位于Java。郎。类别载入器。加载类(类加载器。Java:252)
位于Java。郎。类别载入器。加载内部类(类加载器。Java:320)
位于org。阿帕奇。公地。豆制品。豆子地图。createtype transformers(bean map。Java:132)
位于org。阿帕奇。公地。豆制品。豆子地图。clinit(豆图。Java:68)
在com。例2。POJO。pojotomap。objecttomap(pojotomap。Java:23)
位于com。例2。POJO。pojotomap。main(pojotomap。Java:16)
原因:Java。郎。classnotfoundexception:org。阿帕奇。公地。收藏。变压器
位于Java。网。URL类加载器$1。运行(URL类加载器。Java:200)
在爪哇。安全。门禁控制器。特权(原生方法)
位于Java。网。URL类加载器。查找类(URL类加载器。Java:188)
位于Java。郎。类别载入器。加载类(类加载器。Java:307)
看着孙。杂项启动器$应用程序类加载器。加载类(启动器。Java:301)
位于Java。郎。类别载入器。加载类(类加载器。Java:252)
位于Java。郎。类别载入器。加载内部类(类加载器。Java:320)
.16更
解决方法见本人的另一篇文章:https://www。jb51。net/article/190471html文件的后缀
第二种:使用Introspector转换
//地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象
公共静态对象mapToObject(MapString,对象映射,类?beanClass)引发异常{
if (map==null)
返回空
对象obj=bean类。新实例();
bean info bean info=自省者。获取bean信息(对象。getclass());
属性描述符[]属性描述符=bean信息。getproperty描述符();
for(属性描述符属性:属性描述符){
方法setter=属性。getwritemethod();
if (setter!=null) {
setter.invoke(obj,map。获取(属性。getname()));
}
}
返回目标文件
}
//java对象转地图
公共静态MapString,objectToMap(对象对象)引发异常{
if (obj==null) {
返回空
}
MapString,Object map=new HashMapString,Object();
bean info bean info=自省者。获取bean信息(对象。getclass());
属性描述符[]属性描述符=bean信息。getPropertyDescriptors();
for(属性描述符属性:属性描述符){
字符串键=属性。getname();
如果(关键。comparetignorecase(' class ')==0){
继续;
}
方法getter=property。getreadmethod();
对象值=getter!=null?吸气剂。invoke(obj):null;
map.put(key,value);
}
返回地图;
}
第三种:使用reflect转换
//地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象
公共静态对象mapToObject(MapString,对象映射,类?beanClass)引发异常{
if (map==null) {
返回空
}
object object=bean类。新实例();
field[]fields=bean类。getdeclaredfields();
对于(字段字段:字段){
int mod=field。get修饰符();
if(修饰语。is final(mod)| |修饰符。是静态的(mod)){
继续;
}
字段。设置可访问性(true);
field.set(对象,映射。获取(字段。getname()));
}
返回对象;
}
//java对象转地图
公共静态MapString,objectToMap(对象对象)引发异常{
if (obj==null) {
返回空
}
MapString,Object map=new HashMapString,Object();
field[]声明的fields=obj。getclass().getDeclaredFields();
for(Field Field:声明的字段){
字段。设置可访问性(true);
map.put(field.getName()、field。get(obj));
}
返回地图;
}
第四种:使用net.sf.cglib.beans.BeanMap转换
用到的主要冲突包:cglib-2.2.2.jar
//地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象
公共静态对象mapToObject(MapString,对象映射,类?beanClass)引发异常{
object object=bean类。新实例();
豆图豆图=豆图。创建(对象);
豆子地图。putall(地图);
返回对象;
}
//java对象转地图
公共静态MapString,对象对象映射(对象对象){
MapString,对象映射=映射。new hashmap();
if (obj!=null) {
豆图豆图=豆图。create(obj);
对于(对象键:beanMap.keySet()) {
map.put(key ' ',bean map。get(key));
}
}
返回地图;
}
在使用本方法进行地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象时,可能会发生以下错误:
线程“主”Java。郎。noclassdeffounderror中出现异常错误:org/objectweb/asm/Type
在网上。SF。cglib。核心。utils类型。分析类型(类型实用工具。Java:184)
在网上。SF。cglib。核心。重点工厂。clinit(重点工厂。Java:66)
在网上。SF。cglib。豆子。bean map$generator。clinit(豆图。Java:64)
位于网。SF。cglib。豆子。豆子地图。创建(bean映射。Java:56)
在com。例2。POJO。maptopojo。maptobean(maptopojo。Java:27)
位于com。例2。POJO。maptopojo。主(maptopojo。Java:18)
原因:Java。郎。classnotfoundexception:org。对象web。ASM。类型
位于Java。网。URL类加载器$1。运行(URL类加载器。Java:200)
在爪哇。安全。门禁控制器。特权(原生方法)
位于Java。网。URL类加载器。查找类(URL类加载器。Java:188)
位于Java。郎。类别载入器。加载类(类加载器。Java:307)
看着孙。杂项启动器$应用程序类加载器。加载类(启动器。Java:301)
位于Java。郎。类别载入器。加载类(类加载器。Java:252)
位于Java。郎。类别载入器。加载内部类(类加载器。Java:320)
.6更
解决方法见本人的另一篇文章:https://www。jb51。net/article/190474html文件的后缀
第五种:使用json转换
用到的主要冲突包:fastjson-1.2.54.jar
//地图转Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)对象
公共静态对象mapToObject(MapString,对象映射,类?beanClass)引发异常{
string JSON str=JSON对象。tojsonstring(地图);
返回JSONObject.parseObject(jsonStr,bean类);
}
//java对象转地图
公共静态MapString,对象对象映射(对象对象){
string JSON str=JSON对象。tojsonstring(obj);
返回JSON对象。解析对象(JSON字符串);
}
以上方法本人均实际测试通过。到此这篇关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)中实现地图与对象相互转换的几种实现的文章就介绍到这了,更多相关Java语言(一种计算机语言,尤用于创建网站)地图与对象相互转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。