Прочитав лекции на уровне 33, не могу понять, как при сериализации в JSON с помощью Jackson, указать для классов с одинаковыми полями дополнительно поле, type, как это сделать в лекции 4.
Указываю, что хочу ввести поле type, но ничего не происходит. Подскажите, пожалуйста, что я делаю не так?
public class Solution {
public static void main(String[] args) throws IOException {
Cat cat = new Cat ();
cat.name = "Murka";
cat.age = 5;
cat.weight = 3;
Dog dog = new Dog ();
dog.name = "Killer";
dog.age = 8;
dog.owner = "Bill Jeferson";
ArrayList pets = new ArrayList();
pets.add(cat);
pets.add(dog);
StringWriter writer = new StringWriter();
convertToJSON(writer, pets);
System.out.println(writer.toString());
//[{"name":"Murka","age":5,"weight":3},{"name":"Killer","age":8,"owner":"Bill Jeferson"}]
}
public static void convertToJSON(StringWriter writer, Object object) throws IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(writer, object);
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Cat.class, name = "cat"),
@JsonSubTypes.Type(value = Dog.class, name = "dog")
})
public static class Cat extends Pet
{
public int age;
public int weight;
}
public static class Dog extends Pet
{
public int age;
public String owner;
}
public static class Pet
{
public String name;
}
}

ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
У меня тоже вопрос. А вот если все классы создать в разных файлах, а не в одном, как в примере показано, то где аннотации писать? В каком файле?