首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Univocity对带注释的bean进行部分记录

使用Univocity对带注释的bean进行部分记录
EN

Stack Overflow用户
提问于 2020-06-06 09:00:41
回答 1查看 182关注 0票数 0

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

我理解Univocity可以将带注释的bean转换为记录,但我无法找到如何使用Univocity处理带注释的bean以获得部分记录,而我可以编程地确定记录的其余部分,而无需使用注释bean。

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

我想实现一些功能上相当于以下内容的东西。

代码语言:javascript
复制
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();
    }
}

如何从bean类检索标头,以及如何使用univocity从bean实例中检索解析的值?

EN

回答 1

Stack Overflow用户

发布于 2020-06-12 03:59:15

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

还可以查看com.univocity.parsers.annotations.helpers.AnnotationHelper公共类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62229536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档