【问题标题】:Jackson Polymorphism杰克逊多态性
【发布时间】:2013-08-30 00:13:07
【问题描述】:

我有一个类 Animal 和扩展 Animal 的子类 Cat 和 Dog。 我有一个名为 Zoo 的类,其变量为 List;

即

Class Animal {
  String name;

}

 Class Cat Extends Animal {
 String color;
}

Class Zoo {
  List<Animal> animalsInZoo;
  public void printAnimalClass()
  { 
    for(Animal a :animalsInZoo)
   {
    System.out.println(a.getClass.getName());
   } 
  }
 }

zoo 的对象将包含可以是 Animal 对象或 Animal 子类的动物 以下是 Zoo 类 Object 的示例 JSON 表示。

 { "animalsInZoo" : 
   [
     {"name":"A"},
     {"name": "B","color":"white"}
   ]
  }

我必须将其转换为 java 对象,以使列表中的第一个动物转换为类 Animal 的对象,第二个转换为类 Cat 的对象

【问题讨论】:

    标签: oop jackson


    【解决方案1】:

    您必须自己进行转换,假设您有另一只具有相同属性的动物:

    Class Horse Extends Animal {
        String color;
    }
    

    jackson 不知道将 {"name": "B","color":"white"} 转换为 Cat 或 Horse。

    您可以添加一个属性来标记您需要转换为哪种动物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2015-05-13
      • 2017-09-03
      相关资源
      最近更新 更多