我有以下对象结构:
public class Animal<T> implements IMakeSound<T>
public class Dog<T> extends Animal<T>
public class Cat<T> extends Animal<T>
我想使用jackson序列化和反序列化我的对象 问题是在Json中我在T中获得了LinkedHashmap,而de-sirializtion则是基础对象Animal。
当我对T添加限制时,因为杰克逊注释会使其完美地运作
@JsonSubTypes({
@Type(value = PuffyTail.class, name = "puffyTail"),
@Type(value = StraightTail.class, name = "straightTail") })
class Tail {
...
但这不是我想要的行为 - 我不使用&lt; X延伸Y>。
有没有办法处理java泛型并获得序列化的正确对象? 有没有办法在没有注释的情况下完成它?
答案 0 :(得分:2)
您可以在从ObjectMapper读取值时指定TypeReference,以便解析正确类型的对象:
Cat<PuffyTail> fluffyKitty = objectMapper.readValue(jsonString,
new TypeReference<Cat<PuffyTail>>(){});