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

如何用Jackson用嵌套抽象字段实例化类?

井誉
2023-03-14

我有以下课程:

public class City
{
    Zoo zoo;
}

public class Zoo
{
    Animal[] animals;
}

public abstract class Animal 
{
    String name;

    abstract void eat();
}

问题是我只能修改city类。

共有1个答案

西门逸仙
2023-03-14

因为您只能修改city类,所以您可能会发现混合注释很有用。其思想是创建并注释一个新类,该类充当您希望能够注释的类的代理项(但由于各种原因无法注释)。然后您向Jackson注册您的代理项,告诉它在您的代理项上寻找注释,而不是在实际的类上寻找注释。

首先,您可以尝试为Animal创建一个mix-in,并按照Vince Emigh的建议,用@jsondeserialize(as=concreteclass.class)注释这个mix-in类。一旦你完成了这个工作,你就可以尝试用多态类型处理注释来注释它。

 类似资料:
  • 问题内容: 我想将JSON字符串转换为java对象,但是此对象的类包含抽象字段,Jackson无法实例化抽象字段,并且不会产生该对象。告诉它一些抽象类的默认实现的最简单方法是什么 或根据JSON属性名称决定实现类,例如 对于JSON对象: 我只是想: 我知道在Jackson中可以将类信息嵌入JSON,但是我不想使我使用的JSON格式复杂化。我想通过设置默认实现类或属性名称(’cat’)来决定使用哪

  • 我有以下xml 我需要将其反序列化为以下POJO: 这里的问题是被包装在元素中

  • 有一个类内部有另一个静态类。Jackson在反序列化JSON时调用setter。但某些设置器不能按预期工作。 类定义: 输出: 设置名称caled,名称=黑暗之塔

  • 我对对象接口的jackson序列化有问题。 我有课 哪个实现 还有上课 哪个实现 上课 我要和Jackson连载Container得到结果 但事实上我得到了结果 尽管我在映射中指定了点的序列化类型(),但在嵌套对象“point”中具有属性“name”。接口点视图没有方法getName,但结果中存在点的字段“name”。 若我从类容器中的方法getMap中删除注释(),我将得到结果 现在点没有属性"

  • 问题内容: 最近,我一直在使用XML解析器。这对我来说仅仅是个开始,我设法了解了如何在Java即使用DOM解析器类,以及如何解析XML文档。 我想问自己的是如何允许抽象类(例如和)实例化新实例?然后在另一个示例中,我看到: 据我所知,您不能为抽象类和接口类实例化(换句话说,创建一个对象)。我对么? 难道和方法创建上面的抽象类的实例? 我是否缺少使用抽象类及其新对象的内容? 问题答案: 该方法是一个

  • 大家好,我正在用@JSONProperty的自定义名称序列化嵌套对象。所以,这里是: 所以,在每一个测试中,我都看到非自定义的名称--“name”。我用@JsonProperty添加了getter,但没有成功。 我的测试类: 测试结果:预期:{“Payload”:{“CustomName”:“Name”}}实际:{“Payload”:{“Name”:“Name”}} org.opentest4j.