56 lines
1.3 KiB
Java
56 lines
1.3 KiB
Java
package com.baeldung.jackson.annotation;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
|
|
import com.fasterxml.jackson.annotation.JsonTypeName;
|
|
|
|
public class Zoo {
|
|
public Animal animal;
|
|
|
|
public Zoo() {
|
|
|
|
}
|
|
|
|
public Zoo(final Animal animal) {
|
|
this.animal = animal;
|
|
}
|
|
|
|
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type")
|
|
@JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "dog"), @JsonSubTypes.Type(value = Cat.class, name = "cat") })
|
|
public static class Animal {
|
|
public String name;
|
|
|
|
public Animal() {
|
|
}
|
|
|
|
public Animal(final String name) {
|
|
this.name = name;
|
|
}
|
|
}
|
|
|
|
@JsonTypeName("dog")
|
|
public static class Dog extends Animal {
|
|
public double barkVolume;
|
|
|
|
public Dog() {
|
|
}
|
|
|
|
public Dog(final String name) {
|
|
this.name = name;
|
|
}
|
|
}
|
|
|
|
@JsonTypeName("cat")
|
|
public static class Cat extends Animal {
|
|
boolean likesCream;
|
|
public int lives;
|
|
|
|
public Cat() {
|
|
}
|
|
|
|
public Cat(final String name) {
|
|
this.name = name;
|
|
}
|
|
}
|
|
} |