在 univocity 中使用默认空转换时出现问题

Issue while using default null conversion in univocity

我正在使用 univocity 解析器来解析 csv 文件。

@NullString(nulls = { "", " " })
@Parsed(
        field = "referenceNumber1",
        defaultNullRead = "NULL")
private String referenceNumber1;

@NullString(nulls = { "", " " })
@Parsed(
        field = "referenceNumber2",
        defaultNullRead = "NULL")
private String referenceNumber2;

第一个条目:"ref1,ref2"

Bean 值:referenceNumber1 = ref1,referenceNumber2 = ref2

第二个条目:"ref1,"

Bean 值:referenceNumber1 = ref1,referenceNumber2 = "NULL"

第三个条目:"ref1"

Bean 值:referenceNumber1 = ref1,referenceNumber2 = null

对于第三种情况,我想要 referenceNumber2 = "NULL" 但它是空的。看起来因为在 ref1 univocity 之后没有逗号不应用任何 bean 转换并认为它是文件结尾。有什么办法可以在这里实现 "NULL" 吗?

这里是图书馆的作者。

我同意这是一个奇怪的行为,今天打开 this issue 来解决这个问题。

同时,如果您 select 解析器设置中的字段,您将获得所需的结果。

s.selectFields("referenceNumber1", "referenceNumber2");

另一种选择是使用默认值声明您的字段:

private String referenceNumber2 = "NULL";

两种解决方案都很糟糕,所以我将尽快修复此问题并发布 2.7.1 版本。

编辑:它已在今天发布的 2.7.1 版中修复。