mapping - super CSV 和多 bean 映射

标签 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));

我没有尝试这个,因为我想确定没有其他/更好的方法。

感谢您的帮助 丹尼尔

最佳答案

不,您无法将一行读入多个 bean - 抱歉! (我不确定这会是什么样子 - 你会得到 List<Object> 回来吗?)

您有几个选择:

  1. 添加对象之间的关系

    然后可以使用像 parent.fieldA, parent.child.fieldB 这样的映射。在您的场景中,地址和银行帐户在语义上不相关,因此我建议创建一个共同的父级(请参阅下一个选项)

  2. 添加公共(public)父对象

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

哦,我建议在发布问题之前先尝试一下 - 通常您会回答自己的问题,或者能够提供更多详细信息,从而获得更好的答案!

关于mapping - super CSV 和多 bean 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20395866/

相关文章:

coldfusion - 在 ColdFusion 中映射到 CFC

java - Orika 是否支持来自 java.util.Set 的映射?

java - 如何从 Java 中的泛型类型反序列化 JSON 对象?

java - 按类型表映射子类(多对一 Hibernate)

c# - 为 SqlBulkCopy 中的某些列设置常量值

java - ParseEnum(方法)无法从 SuperCSV (Java) 中的 .csv 文件解析/读取字符串作为枚举

java - 使用 supercsv 的 CSV header 验证

java - NoSuchMethodException : java. time.LocalDateTime.<init>() 使用 Super CSV 读取 CSV

java - 使用 SuperCSV 跳过 CSV 文件中的可选 header

java - 异常后继续 SuperCSV 读取