【问题标题】:How to get Optional class with jersey client如何使用泽西客户端获取可选课程
【发布时间】:2018-03-17 09:24:46
【问题描述】:

我正在尝试使用 jersey 客户端获取可选类。当远程服务器返回Optional.empty() 时,我收到此错误。

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "present" (class java.util.Optional), not marked as ignorable 

我的代码

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());

Client client = ClientBuilder.newClient().register(new JacksonJsonProvider(mapper));
Optional<MyType> myType = client.target(TARGET_URL)
                    .path(PATH)
                    .request()
                    .get(Optional.class);

我的相关依赖如下

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.9.1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jdk8</artifactId>
    <version>2.9.1</version>
</dependency>

编辑

在远程服务器上运行的应用程序是一个 Spring Boot 应用程序。我在应用程序上添加了 jackson-datatype-jdk8 依赖项。在此之后,无法识别的字段异常解决了,但返回对象为空。在此之前,邮递员返回如下结果

{
    "present": false
}

现在

null

【问题讨论】:

标签: java java-8 optional jersey-client


【解决方案1】:

您可以使用@JsonInclude(Include.NON_EMPTY) 来注释此类文件。

值表示只有具有值的属性值 那些为 null 或被认为是空的内容不包含

【讨论】:

  • 我在我的班级顶级客户端和客场都添加了这个注释,但我仍然得到错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 2016-03-28
  • 2015-01-12
  • 2015-03-07
  • 2012-07-20
相关资源
最近更新 更多