Ошибка при использовании нулевого преобразования по умолчанию в однозначности
Я использую анализатор 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, выпущенной сегодня.