Java Jackson选择了错误的类进行反序列化

Java Jackson选择了错误的类进行反序列化,java,json,jackson,Java,Json,Jackson,我正在尝试反序列化一个JSON对象,如下所示: {"payload":"cGF5bG9hZA==", "verifier":{"id":"00000000-0000-0001-0000-000000000002", "accountId":"00000000-0000-0003-0000-000000000004"}} @Data @NoArgsConstructor @AllArgsConstructor class VerifiedPayload<Veri

我正在尝试反序列化一个JSON对象,如下所示:

{"payload":"cGF5bG9hZA==",
 "verifier":{"id":"00000000-0000-0001-0000-000000000002",
             "accountId":"00000000-0000-0003-0000-000000000004"}}
@Data
@NoArgsConstructor
@AllArgsConstructor
class VerifiedPayload<VerifierType extends JSONable> implements JSONable {
    private byte[] payload;
    private VerifierType verifier;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Verifier implements JSONable {
    private UUID id;
    private UUID accountId;
}
通过此电话:

VerifiedPayload<VerifierType> verifiedPayload = new ObjectMapper().readValue(jsonVerifiedPayload, new TypeReference<VerifiedPayload<VerifierType>>() {});
VerifiedPayload
如下所示:

{"payload":"cGF5bG9hZA==",
 "verifier":{"id":"00000000-0000-0001-0000-000000000002",
             "accountId":"00000000-0000-0003-0000-000000000004"}}
@Data
@NoArgsConstructor
@AllArgsConstructor
class VerifiedPayload<VerifierType extends JSONable> implements JSONable {
    private byte[] payload;
    private VerifierType verifier;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Verifier implements JSONable {
    private UUID id;
    private UUID accountId;
}
它似乎试图构造一个
JSONable
而不是
VerifiedPayload>


我在这里做错了什么?

大概在
readValue
的调用站点上,
VerifierType
也是一个类型变量,而不是实际的类型(类、接口)。对于类型变量,Jackson提取它们的边界并将其用作反序列化的目标。您的意思是使用
验证器
new TypeReference(){}
?@SotiriosDelimanolis:我想我明白你的意思了,但是反序列化时我不想被绑定到验证器上,因为它可能是另一个用作验证器的类。Jackson无法猜到你想要什么。类型擦除可防止类型参数的传播
VerifierType
只是一个类型变量。@SotiriosDelimanolis:好的,那么,我如何反序列化已验证的负载呢?大概在
readValue
的调用站点上,
VerifierType
也是一个类型变量,而不是实际的类型(类、接口)。对于类型变量,Jackson提取它们的边界并将其用作反序列化的目标。您的意思是使用
验证器
new TypeReference(){}
?@SotiriosDelimanolis:我想我明白你的意思了,但是反序列化时我不想被绑定到验证器上,因为它可能是另一个用作验证器的类。Jackson无法猜到你想要什么。类型擦除可防止类型参数的传播
VerifierType
只是一个类型变量。@SotiriosDelimanolis:好的,但是,我如何反序列化已验证的负载?