带有推土机的SuperCSV - 如何映射到列表列表?

时间:2015-01-07 13:43:44

标签: csv dozer supercsv

将SuperCSV与Dozer(版本2.2.0)一起使用,我已成功将数据映射到List。但是,我现在有一个案例,我希望映射到List List。在我试图映射到的对象中,我有一个看起来像这样的字段:

List<List<String>> myListOfLists;

对于我的字段映射,我这样做了:

&#34; myListOfLists [0] [0]&#34;,&#34; myListOfLists [0] [1]&#34;,&#34; myListOfLists [1] [0]&#34;等等。

但是,这会导致以下错误:

  

org.dozer.MappingException:找不到字段的读取或写入方法   (myListOfLists [0])在类(类   com.foo.MyClassBeingMappedTo)

我似乎无法找到嵌套集合的任何示例,但似乎这应该是可能的。有没有办法将数据映射到我的List<List<String>>字段?

1 个答案:

答案 0 :(得分:0)

我通过为内部List创建一个包装类来解决这个问题。我创建了一个这样的内部类:

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;

然后字段映射只是&#34; myListOfLists [0] .innerList [0]&#34;,&#34; myListOfLists [0] .innerList [1]&#34;,&#34;& #34; myListOfLists [1] .innerList [0]&#34;等等

不是最干净的,但就像上面的评论所说,Dozer似乎不支持嵌套列表。所以你必须在两者之间添加另一个类。