I am using univocity parser for parsing csv files.
@NullString(nulls = { "", " " })
@Parsed(
field = "referenceNumber1",
defaultNullRead = "NULL")
private String referenceNumber1;
@NullString(nulls = { "", " " })
@Parsed(
field = "referenceNumber2",
defaultNullRead = "NULL")
private String referenceNumber2;
First entry : "ref1,ref2"
Bean values : referenceNumber1 = ref1, referenceNumber2 = ref2
Second entry : "ref1,"
Bean values : referenceNumber1 = ref1, referenceNumber2 = "NULL"
Third entry : "ref1"
Bean values : referenceNumber1 = ref1, referenceNumber2 = null
For the third scenario I want referenceNumber2 = "NULL" but it is coming as null. Looks like since there is no comma after ref1 univocity does not apply any bean conversion and considers it end of file. Is there any way I can achieve "NULL" here?
Author of the library here.
I agree it's a weird behaviour and opened this issue to fix this today.
In the meantime, if you select the fields in the parser settings you will get the result you want.
s.selectFields("referenceNumber1", "referenceNumber2");
The other alternative is to declare your field with a default value:
private String referenceNumber2 = "NULL";
Both solutions suck, so I'm going to fix this ASAP and release a 2.7.1 version.
EDIT: It's been fixed on version 2.7.1, released today.