Нулевая проверка с vavr - PullRequest
       7

Нулевая проверка с vavr

0 голосов
/ 27 февраля 2019

Для моего API я анализирую объект и создаю свой объект с помощью Lombok Builder.Одной из переменных является «ArrivalTime» типа LocalDateTime, который, конечно, может быть нулевым.

Раньше я имел его так:

visits.add(visit.builder()
      .arrivalTime(legacyVisit.getArrivalTime() == null ? null :
          LocalDateTime.parse(legacyVisit.getArrivalTime(), ISO_OFFSET_DATE_TIME))

Но я смотрю налучший способ сделать это, может быть, с помощью опции vavr?Но я сталкиваюсь с проблемами.Я понимаю, что я помещаю в "map" логику, если она не равна нулю, и в "get" логику, если она равна нулю.Но я не могу получить (ноль).Если значением Arrival является NULL, я хочу оставить его равным NULL.

visits.add(visit.builder()
      .arrivalTime(Option.of(legacyVisit.getArrivalTime())
          .map(p -> LocalDateTime.parse(p, ISO_OFFSET_DATE_TIME)))

Я также пытался преобразовать мою переменную прибытие в моем объекте в Option, но я просто отправляю объект как ответ в своем API, и он превращается в что-то вроде этого:

    "arrivalTime": {
        "empty": true,
        "lazy": false,
        "singleValued": true,
        "async": false,
        "defined": false,
        "orNull": null
    },

что очень некрасиво.Есть идеи?

1 Ответ

0 голосов
/ 27 февраля 2019

Похоже, что arrivalTime как Option было бы самым выразительным и мощным.Вы можете легко отобразить значения, как вы упомянули.

Но, как уже упоминалось, сериализация может потребовать некоторой работы.Есть некоторые модули Vavr, которые делают именно это:

  • vavr-jackson , которые вы можете использовать, когда используете Джексона в качестве библиотеки сериализатора JSON
  • vavr-gson , который можно использовать при использовании GSON в качестве библиотеки сериализатора JSON
...