杰克逊多态性

时间:2013-08-27 09:50:24

标签: oop jackson

我有一个类动物和子类Cat和Dog,它扩展了Animal。 我有一个名为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类的Object的示例JSON表示。

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

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

1 个答案:

答案 0 :(得分:0)

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

Class Horse Extends Animal {
    String color;
}

杰克逊不知道将{“name”:“B”,“color”:“white”}转换为Cat或Horse。

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