Проблема при использовании преобразования null по умолчанию в однозначности

Я использую синтаксический анализатор univocity для анализа файлов csv.

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

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

Первая запись: "ref1,ref2"

Значения компонента: referenceNumber1 = ref1, referenceNumber2 = ref2.

Вторая запись: "ref1,"

Значения компонента: referenceNumber1 = ref1, referenceNumber2 = "NULL"

Третья запись: «ref1»

Значения компонента: referenceNumber1 = ref1, referenceNumber2 = null

Для третьего сценария я хочу, чтобы referenceNumber2 = "NULL", но он приходит как нуль. Похоже, поскольку после ref1 нет запятой, univocity не применяет никакого преобразования bean-компонента и считает его концом файла. Могу ли я каким-либо образом добиться «NULL» здесь?


person Harsh    schedule 10.07.2018    source источник


Ответы (1)


Автор библиотеки здесь.

Я согласен, что это странное поведение, и открыл эту проблему, чтобы исправить это сегодня.

А пока, если вы выберете поля в настройках парсера, вы получите желаемый результат.

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

Другая альтернатива - объявить ваше поле со значением по умолчанию:

private String referenceNumber2 = "NULL";

Оба решения отстой, поэтому я собираюсь исправить это как можно скорее и выпустить версию 2.7.1.

РЕДАКТИРОВАТЬ: Это было исправлено в версии 2.7.1, выпущенной сегодня.

person Jeronimo Backes    schedule 11.07.2018