Java vavr的空检查

Java vavr的空检查,java,vavr,Java,Vavr,对于我的API,我正在解析一个对象,并使用lombok builder创建我的对象。其中一个变量是LocalDateTime类型的“arrivalTime”,当然,它可以为null 我以前是这样的: visits.add(visit.builder() .arrivalTime(legacyVisit.getArrivalTime() == null ? null : LocalDateTime.parse(legacyVisit.getArrivalTime()

对于我的API,我正在解析一个对象,并使用lombok builder创建我的对象。其中一个变量是LocalDateTime类型的“arrivalTime”,当然,它可以为null

我以前是这样的:

visits.add(visit.builder()
      .arrivalTime(legacyVisit.getArrivalTime() == null ? null :
          LocalDateTime.parse(legacyVisit.getArrivalTime(), ISO_OFFSET_DATE_TIME))
    "arrivalTime": {
        "empty": true,
        "lazy": false,
        "singleValued": true,
        "async": false,
        "defined": false,
        "orNull": null
    },
但我正在寻找一种更好的方法,也许使用vavr选项?但是我遇到了问题。我知道如果逻辑不为空,我将其放入“映射”逻辑,如果为空,我将其放入“获取”逻辑。但是我不能得到(空)。如果arrivalTime为null,我希望将其保持为null

visits.add(visit.builder()
      .arrivalTime(Option.of(legacyVisit.getArrivalTime())
          .map(p -> LocalDateTime.parse(p, ISO_OFFSET_DATE_TIME)))
我还尝试将对象中的arrivalTime变量转换为选项,但我只是将对象作为API中的响应发送,它将其转换为如下内容:

visits.add(visit.builder()
      .arrivalTime(legacyVisit.getArrivalTime() == null ? null :
          LocalDateTime.parse(legacyVisit.getArrivalTime(), ISO_OFFSET_DATE_TIME))
    "arrivalTime": {
        "empty": true,
        "lazy": false,
        "singleValued": true,
        "async": false,
        "defined": false,
        "orNull": null
    },

这很难看。有什么想法吗

看起来有
到达时间
作为
选项
将是最具表现力和功能的。您可以轻松地映射您提到的值

但是如前所述,序列化可能需要一些工作。有一些Vavr模块正是这样做的:

  • 当您将jackson用作JSON序列化程序库时,可以使用它
  • 当您使用GSON作为JSON序列化程序库时,可以使用它

看起来有
到达时间
作为
选项
将是最具表现力和功能的。您可以轻松地映射您提到的值

但是如前所述,序列化可能需要一些工作。有一些Vavr模块正是这样做的:

  • 当您将jackson用作JSON序列化程序库时,可以使用它
  • 当您使用GSON作为JSON序列化程序库时,可以使用它

要回答特定的问题“如果为空,请保持null”,只需
.getorelseull()
。因此,您将拥有(legacyVisit.getArrivalTime())的
选项.map(p->LocalDateTime.parse(p,ISO\u OFFSET\u DATE\u TIME)).getOrElseNull()
。但一般来说,在导入
vavr-jackson
时,在API中声明类型为
Option
的字段就足够了。我们公司就是这么做的。要回答“如果为空,请保持null”这一特定问题,只需
.getorelseull()
。因此,您将拥有(legacyVisit.getArrivalTime())的
选项.map(p->LocalDateTime.parse(p,ISO\u OFFSET\u DATE\u TIME)).getOrElseNull()
。但一般来说,在导入
vavr-jackson
时,在API中声明类型为
Option
的字段就足够了。我们公司就是这么做的。