我有一个通过JSON从客户端发送到服务器的对象。对象本身具有多个属性,这些属性本身就是复杂的数据类型。其中大多数都可以通过标准的杰克逊解串器进行序列化。
Hovewer一些属性属于抽象超类的不同子类,它们本身具有属于不同抽象超类的子类的属性。
问题在于我没有@JacksonDeserializer
类中对象所属的类的信息。
层次结构可以这样看:
public class PetOwner extends Person {
public String name;
public ArrayList<Pet> pets;
}
public class CatOwner extends Person {
public String name;
public Cat cat;
}
public class Cat extends Pet {
public String name;
public String color;
}
//Both Person and Pet are abstract classes
这些只是用于说明问题的示例类。 我需要Deserializer来执行以下操作: 对于CatOwner的所有实例,cat可以直接反序列化,因为它是非abstact类的实例。对于PetOwner的所有实例,他的宠物需要在不知道它们所属的子类的情况下被反序列化(=它们是哪种类型的宠物)。
现在的问题是,如果我没有关于哪种类型的@JacksonDeserializer
必须被反序列化的信息,我是否可以告诉Pet
类只被调用?
我尝试了以下方式:
在@JacksonDeserializer
Pet
课程中,我创建了一个随机类型的宠物,给它一个ID
,然后通过查找将其在服务中转换为正确的Pet
类型身份证。
这适用于所有者为PetOwner
的情况。但如果所有者是CatOwner
,则显然不能仅将cat
属性设置为例如Dog
。一个@JacksonDeserializer
个对象。因此,如果所有者为PetOwner
react-native-push-notification