JavaRush /Java блог /Random UA /Серіалізація у Jackson. Як вказати явно який підклас вико...
ColdDeath
34 рівень
Москва

Серіалізація у Jackson. Як вказати явно який підклас використати?

Стаття з групи Random UA
Прочитавши лекції на рівні 33, не можу зрозуміти, як при серіалізації JSON за допомогою Jackson, вказати для класів з однаковими полями додатково поле, type, як це зробити в лекції 4. Вказую, що хочу ввести поле Серіалізація у Jackson.  Як вказати явно який підклас використати?  - 1 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 = новий 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; } }
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ