gpt4 book ai didi

java - 使用 Univocity 将注释 bean 转为部分记录

转载 作者:行者123 更新时间:2023-12-01 16:22:40 25 4
gpt4 key购买 nike

我想让 Univocity 使用 annotated bean实例来确定 CSV 内容的部分,即仅前几列。其余的列由一些复杂的编程逻辑提供,独立于 bean 实例或类型。

我知道 Univocity 可以将带注释的 Bean 转换为记录,但我找不到如何使用 Univocity 处理带注释的 Bean 来获取部分记录,同时我以编程方式确定其余记录,而无需使用带注释的 bean。

该 bean 将使用 @Headers 和 @Parsed 注释进行注释。 (带注释的 bean 将由我的库的用户提供。)

我想实现与以下功能等效的东西。

public void toCsv(Map<UserBean, MyContent> entries) {
CsvWriter writer = …
List<String> beanHeaders = someUnivocityHelper.getAsHeaders(UserBean.class);
List<String> allHeaders = ImmutableList.builder().addAll(beanHeaders).addAll(myHeaders).build();
writer.writeHeaders(allHeaders);
for (Entry<UserBean, MyContent> entry : entries.entrySet()) {
UserBean userBean = entry.getKey();
Map<String, Object> beanAsMap = someUnivocityHelper.getAsMap(userBean);
beanAsMap.entrySet().stream().forEach(e -> writer.addValue(e.getKey(), e.getValue()));
MyContent content = entry.getValue();
// Here I use content and the writer to write the rest of the record

writer.writeValuesToRow();
}
}

如何使用 univocity 从 bean 类检索 header 以及从 bean 实例解析的值?

最佳答案

要读取仅在 bean 中定义的 header ,您可以尝试@Headers(extract=true),因此库将使用用户 bean 中的注释。如果您想写入更多 header - 只需将所有必需的 header 设置为 csv writer:CsvWriterSettings.setHeaders(allHeaders)

另请查看com.univocity.parsers.annotations.helpers.AnnotationHelper公共(public)类。

关于java - 使用 Univocity 将注释 bean 转为部分记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62229536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com