Я столкнулся со странным поведением при использовании Джексона с полиморфным поведением.Позвольте мне объяснить на простом примере, у меня есть следующие классы:
Animal.java:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "dog"),
@JsonSubTypes.Type(value = Cat.class, name = "cat") })
public class Animal {
private String name;
}
Dog.java
public class Dog extends Animal {}
Cat.java
public class Cat extends Animal {}
Zoo.java
public class Zoo {
private List<Animal> allAnimals;
private Dog gaurdDog;
// Getters and Setters
}
При простой инициализации это создает следующий JSON: {"allAnimals": [{"cat": {"name": "zazzy"}}, {"cat ": {" name ":" pus "}}, {" dog ": {" name ":" marley "}}]," gaurdDog ": {" dog ": {" name ":" rambo "}}} Здесь все как я и ожидал.dog
и cat
обернуты в объект с именем, которое я указал, когда они являются частью Animal
List
.
В случае свойства gaurdDog
, я хочу исключить обтекание и поставитьвсе параметры, как показано ниже
...
"gaurdDog": {
"name": "rambo"
}
...
Как мне этого добиться?
В основном я хочу создать оболочку вокруг Dog
, когда она является частью Animal
List.
Использование: Jackson 2.3.0