【问题标题】:How to use Jackson with Generics如何将 Jackson 与泛型一起使用
【发布时间】:2014-02-16 11:14:48
【问题描述】:

我有以下对象结构:

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,而反序列化是针对基础对象 Animal。

当我向 T 添加限制时,由于 Jackson 注释,它可以完美地工作

@JsonSubTypes({
   @Type(value = PuffyTail.class, name = "puffyTail"),
   @Type(value = StraightTail.class, name = "straightTail") })
class Tail {
...

但这不是我想要的行为 - 我不使用 。

有没有办法使用 java 泛型并获得正确的序列化对象?
有没有办法在没有注释的情况下完成它?

【问题讨论】:

  • 因为泛型在编译时类型被擦除,所以您需要向 Jackson 提供有关如何创建泛型类型的提示。

标签: java generics serialization jackson


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2011-02-09
    • 2019-03-21
    相关资源
    最近更新 更多