超级CSV和多个bean映射

时间:2013-12-05 09:16:42

标签: mapping supercsv

我遇到了使用Super CSV映射多个bean的问题。我有一个csv文件,包含多个bean的信息(每行)。但正如我从网站上的示例中看到的那样,只能将每一行映射到一个bean(而不是两个或更多个bean)。

有没有办法做到这一点?我能想到的唯一方法是创建一个新bean,包含我需要的所有bean并进行深度映射,即:

class MultiBeanWrapper {

    Address addreass;
    BankAccount bankAccount;

}

...
String[] FIELD_MAPPING = new String[] 
     {address.street, bankAccount.bankNumber};
...
beanReader.read(MultiBeanWrapper.class, processors));

我没有尝试过,因为我想确保没有其他/更好的方式。

感谢您的帮助 丹尼尔

1 个答案:

答案 0 :(得分:2)

不,你不能读一行到多个豆子 - 对不起! (我不确定这甚至会是什么样的 - 你会得到一个List<Object>吗?)

您有几个选择:

  1. 在对象之间添加关系

    然后可以使用parent.fieldA, parent.child.fieldB之类的映射。在您的场景中,Address和BankAccount在语义上不相关,因此我建议您创建一个共同的父级(请参阅下一个选项)

  2. 添加公共父对象

    然后您可以使用parent.child1.fieldA, parent.child2.fieldB之类的映射。这是你的建议,但我建议给它一个比Wrapper更好的名字 - 它看起来像我的客户!

  3. 哦,我建议在发布问题之前尝试解决问题 - 通常你会回答你自己的问题,或者能够提供更多细节,以便你得到更好的答案!