首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Jackson中用List<Message<TData>>序列化/反序列化包装器

在Jackson中用List<Message<TData>>序列化/反序列化包装器
EN

Stack Overflow用户
提问于 2022-09-06 19:59:37
回答 1查看 18关注 0票数 0

我试着做一些像https://github.com/brharrington/jackson-databind/blob/master/src/test/java/com/fasterxml/jackson/databind/ser/TestGenericTypes.java#L10这样的事情,但有点扭曲。如何序列化和反序列化这样的对象图?

代码语言:javascript
运行
复制
public class Envelope {
    // more fields here


    // CRUX IS HERE; I can't type it as List<BaseMessage<>> unfortunately
    public List<BaseMessage<Object>> payload;


}

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "n"
)
@JsonSubTypes({
        @JsonSubTypes.Type(value = AMessage.class, name = "a"),
        @JsonSubTypes.Type(value = BMessage.class, name = "b"),
})
public abstract class BaseMessage<TData> {
    // discriminator field getters and setters (no abstract field in Java)
    public abstract String getN();
    public abstract void setN(String n);
    // more props
    public TData ps;
    public SpanContext s;
}
public class AMessage extends BaseMessage<MessageData> {
    public String n = "a";

    @Override
    public String getN() {
        return n;
    }

    @Override
    public void setN(String n) {
        this.n = n;
    }
}
public class MessageData {
    public String example;
    // more props
}
public class BMessage extends BaseMessage<MessageData> {
    public String n = "b";

    @Override
    public String getN() {
        return n;
    }

    @Override
    public void setN(String n) {
        this.n = n;
    }
}

如果我能以某种方式使用annotations

  • Secondly,
  1. 来配置它,那么,如果我能以某种方式使用TypeReference
  2. ,第三,如果我可以将列表键入为List<JsonValue>,然后通过手动读取判别器字段n,然后用实际类型

调用杰克逊,然后显式地调用杰克逊,我会感到最高兴。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 12:45:57

从一开始,上面的代码是正确的;您必须使用运行时反射来检查<Object>的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73627195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档