JavaRush /Java блог /Архив info.javarush /Сериализация в Jackson. Как указать явно какой подкласс и...
ColdDeath
34 уровень
Москва

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

Статья из группы Архив info.javarush
Прочитав лекции на уровне 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 = 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; } }
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
DefNeo Уровень 36
6 марта 2017
Свой код нужно постить по-человечески, с подсветкой…
У меня тоже вопрос. А вот если все классы создать в разных файлах, а не в одном, как в примере показано, то где аннотации писать? В каком файле?