0
我有一個Zoo類,它可以包含不同類型的動物(Dog,...)並且具有用@JsonTypeId註釋的animalType。 Dog類反過來可以包含不同類型的皮帶(RopeLeash,...),並具有用@JsonTypeId註釋的leashType。當我用下面的方法序列化動物園類則leashType被設置animalType還有:Jackson:@JsonTypeId在嵌套時沒有正確序列化
String zooJson = objectMapper.writeValueAsString(zoo);
輸出是:
{"animal":{"leash":{"leashColor":"RED"},"leashType":"ROPE"},"animalType":"ROPE"}
類:
public class Zoo {
@JsonTypeId
private AnimalType animalType;
private Animal animal;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "animalType"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = Cat.class, name = "CAT"),
@JsonSubTypes.Type(value = Dog.class, name = "DOG")
})
public void setAnimal(Animal animal) {
this.animal = animal;
}
//Other getters and setters
}
public class Dog extends Animal {
@JsonTypeId
private LeashType leashType;
private Leash leash;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "leashType"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = RopeLeash.class, name = "ROPE")
})
public void setLeash(Leash leash) {
this.leash = leash;
}
//Other getters and setters
}
public class RopeLeash extends Leash {
private String leashColor;
//Getter and setter for leashColor
}
有什麼錯我的註釋用法?