Ошибка при использовании нулевого преобразования по умолчанию в однозначности

Я использую анализатор 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" здесь?

1 ответ

Решение

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

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

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

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

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

private String referenceNumber2 = "NULL";

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

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

Другие вопросы по тегам