【发布时间】:2016-11-05 21:45:01
【问题描述】:
我的问题和How to convert list of maps to list of objects差不多。
但问题是现在,我有list 的maps 其中maps 包含一些额外的键,这些键在我的Pojo 类中不存在,如下所示:-
List list = [
[param1: "a", param2: ["a","b","c"], param3:[a:"a",b:"b",c:"c"], param4:true, param5:1, param6: "pamra6",param7: "pamra7"],
[param1: "b", param2: ["d","e","f"], param3:[d:"d",e:"e",f:"f"], param4:false, param5:2, param6: "pamra6",param7: "pamra7"]
]
在这个list 中,两个额外的键param6,param7 包括在Pojo 类中不存在的地方,因为在我的场景中,我只考虑Pojo 中存在的那些属性,我无法增加 Pojo 类中的额外属性。
所以当我要将这个list of maps 转换为list of objects 时,如下所示:-
list.collect { new Pojo(it) }
它抛出一个错误:-
groovy.lang.MissingPropertyException:没有这样的属性:param6 for 类:Pojo
这是绝对正确的,但是当我像下面这样转换时:-
list.collect { it as Pojo }
或
list*.asType(Pojo)
它不会抛出任何错误,但是当我们要获得这样的值时:-
.each { pojo ->
pojo.param1
------------
------------
}
找不到这些值。找到的所有值都是null。
当我检查使用.dump() 转换的list of objects 时,它转换为Pojo1_groovyProxy,就像代理对象一样..
所以我的问题是,在这种情况下如何转换???
【问题讨论】:
标签: object arraylist groovy hashmap