java - 如何将 java.util.Optional 映射到 jersey 客户端

标签 java json jackson jersey-2.0 jersey-client

我有一个 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

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

谢谢。

最佳答案

json 不包含一个可选的,它包含一个长的,所以你需要从你得到的 Long 中创建一个 Optional:

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

关于java - 如何将 java.util.Optional 映射到 jersey 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40038232/

相关文章:

javascript - Node.js 和 JSON : Accessing object properties

java - 更改为整数时出现双值编程问题

java - 为什么 OutOfMemoryError 发生在 -Xmx12m 而不是 -Xmx13m?

javascript - 在 jquery 中迭代 json

python - 在不使用文本文件的情况下计算 python 中的行数

java - Jackson 解析 JSON(700 KB 文件)需要 30 秒以上

java - jackson 使一个java属性的两个json属性

Jersey 和 jackson maven 依赖问题?

java - 如何设置intellij idea进程的优先级?

java - Tomcat - 如何限制 Tomcat 在 WIndows 操作系统中使用的最大内存