当前位置: 首页 > 知识库问答 >
问题:

如何为接口引用的反序列化指定单个实现?

叶展
2023-03-14

我想用Jackson反序列化一个JSON对象。因为目标是一个接口,所以我需要指定应该使用哪个实现。

这些信息可以使用@jsonTypeInfo-Annotation存储在JSON-Object中。但我想在源代码中指定实现,因为它总是相同的。

共有1个答案

谭梓
2023-03-14

使用SimpleAbstractTypeResolver:

ObjectMapper mapper = new ObjectMapper();

SimpleModule module = new SimpleModule("CustomModel", Version.unknownVersion());

SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver();
resolver.addMapping(Interface.class, Implementation.class);

module.setAbstractTypes(resolver);

mapper.registerModule(module);
 类似资料:
  • 问题内容: 我想用杰克逊反序列化JSON对象。因为目标是接口,所以我需要指定应使用哪种实现。 该信息可以使用@ JsonTypeInfo-Annotation存储在JSON对象中。但是我想在源代码中指定实现,因为它总是一样的。 这可能吗? 问题答案: 使用一个SimpleAbstractTypeResolver:

  • 像这样: 我该怎么办?

  • 如果一封邮件被发送到我的收件箱,我会收到一条消息,并将内容插入数据库。我有一个组织。springframework。整合。果心信息如下: 现在,如果出现故障,我希望有故障安全恢复机制,我想的是将消息对象序列化到一个文件中,然后反序列化并更新到DB。 问题1。在这种情况下,如何序列化消息对象?2。除了序列化,还可以使用其他机制吗? 编辑我以前没有做过序列化,我听说类应该实现Serializable,

  • 我很难将JSON反序列化到下面示例中实现基本接口的一些类ChildA、ChildB等。 异常是:com.fasterxml.jackson.databind.JsonMappingExc0019:意外令牌(END_OBJECT),预期FIELD_NAME:缺少包含类型id的属性type(对于类Basic) 预期的JSON如下所示: 没有在所有类型对象中显示的属性,因此它们完全不同。但正如您在rea

  • 但这只有在保证先设置start的情况下才起作用。

  • 问题内容: 的功能需要Class。但是,如果我内部传递的类将某些接口作为数据成员,该如何使用它。 尽管我可以理解此异常的原因,因为杰克逊没有获得所传递类的内部接口的具体类,但我的问题是如何解决它?那我该如何反序列化呢?我要反序列化的类是: 这是一个接口,所以这给了我以下错误:- 问题答案: 杰克逊显然不能构造对象,因为它是一个接口。您将需要在json和ObjectMapper中具有其他信息,以告诉