编程语言
首页 > 编程语言> > 如何使用jersey客户端映射java.util.Optional

如何使用jersey客户端映射java.util.Optional

作者:互联网

我有一个DTO,其字段类型为java.util.Optional,像这样:

public class Person {

private final Optional<Long> id;

@JsonCreator
public Person(@JsonProperty("id") Long id) {
    this.id = id;
}

public Optional<Long> id {
    return this.id
}

}

如果我尝试将其序列化为json格式并由jersey客户端发送,则服务器将引发以下异常:

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class java.util.Optional<java.lang.Long>] from Integral number (1); no single-int-arg constructor/factory method

球衣客户端可以使用java.util.Optional吗?

谢谢.

解决方法:

json不包含可选的,它包含一个long,因此您需要从得到的Long中创建一个Optional:

@JsonCreator
public Person(@JsonProperty("id") Long id) {
    this.id = Optional.ofNullable(id);
} 

标签:jackson,jersey-2-0,jersey-client,json,java
来源: https://codeday.me/bug/20191026/1937797.html