带推土机的 SuperCSV - 如何映射到列表列表?
SuperCSV with Dozer - How to map to a List of Lists?
将 SuperCSV 与 Dozer(版本 2.2.0)结合使用,我已经能够成功地将数据映射到 List
。但是,我现在有一种情况,我想映射到 List
个 List
中。在我试图映射到的对象中,我有一个看起来像这样的字段:
List<List<String>> myListOfLists;
对于我的字段映射,我这样做了:
"myListOfLists[0][0]"、"myListOfLists[0][1]"、"myListOfLists[1][0]" 等
但是,这会导致以下错误:
org.dozer.MappingException: No read or write method found for field
(myListOfLists[0]) in class (class
com.foo.MyClassBeingMappedTo)
我似乎找不到任何嵌套集合的例子,但看起来这应该是可能的。有什么方法可以将数据映射到我的 List<List<String>>
字段?
我通过为我的内部 List
创建一个包装器 class 来解决这个问题。我像这样创建了一个内部 class:
public static class InnerListWrapper
{
private List<String> innerList;
public List<String> getInnerList()
{
return innerList;
}
public void setInnerList(List<String> innerList)
{
this.innerList = innerList;
}
}
然后我的外层 List
看起来像这样:
List<InnerListWrapper> myListOfLists;
那么字段映射就是 "myListOfLists[0].innerList[0]","myListOfLists[0].innerList[1]", ""myListOfLists[1].innerList[0]", 等等
不是最干净的,但正如上面的评论所说,Dozer 似乎不支持嵌套列表。所以你必须在两者之间添加另一个class。
将 SuperCSV 与 Dozer(版本 2.2.0)结合使用,我已经能够成功地将数据映射到 List
。但是,我现在有一种情况,我想映射到 List
个 List
中。在我试图映射到的对象中,我有一个看起来像这样的字段:
List<List<String>> myListOfLists;
对于我的字段映射,我这样做了:
"myListOfLists[0][0]"、"myListOfLists[0][1]"、"myListOfLists[1][0]" 等
但是,这会导致以下错误:
org.dozer.MappingException: No read or write method found for field (myListOfLists[0]) in class (class com.foo.MyClassBeingMappedTo)
我似乎找不到任何嵌套集合的例子,但看起来这应该是可能的。有什么方法可以将数据映射到我的 List<List<String>>
字段?
我通过为我的内部 List
创建一个包装器 class 来解决这个问题。我像这样创建了一个内部 class:
public static class InnerListWrapper
{
private List<String> innerList;
public List<String> getInnerList()
{
return innerList;
}
public void setInnerList(List<String> innerList)
{
this.innerList = innerList;
}
}
然后我的外层 List
看起来像这样:
List<InnerListWrapper> myListOfLists;
那么字段映射就是 "myListOfLists[0].innerList[0]","myListOfLists[0].innerList[1]", ""myListOfLists[1].innerList[0]", 等等
不是最干净的,但正如上面的评论所说,Dozer 似乎不支持嵌套列表。所以你必须在两者之间添加另一个class。