如何使用杰克逊与杰克逊

时间:2014-02-16 11:14:49

标签: java generics serialization jackson

我有以下对象结构:

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泛型并获得序列化的正确对象? 有没有办法在没有注释的情况下完成它?

1 个答案:

答案 0 :(得分:2)

您可以在从ObjectMapper读取值时指定TypeReference,以便解析正确类型的对象:

Cat<PuffyTail> fluffyKitty = objectMapper.readValue(jsonString,
        new TypeReference<Cat<PuffyTail>>(){});