У меня есть один API, возвращающий список. Каждый элемент в выводе json будет подклассом, унаследованным от BaseItem.
Э.Г.
class ItemA extends BaseItem{
Integer quantity;
@JsonCreator
ItemA(@JsonProperty(value="quantity", required=true) Integer quantity, ...) {
super(...);
this.quantity = quantity;
}
}
class ItemB extends BaseItem {
Boolean enabled;
@JsonCreator
ItemB(@JsonProperty(value="enabled", required=true) Boolean enabled, ...) {
super(...);
this.enabled = enabled;
}
}
Сериализация webflux api выполнена и работает хорошо.
Я слежу за https://www.baeldung.com/jackson-inheritance и добавил конструкторы @JsonCreator в мои подклассы. Но я предполагаю, что по умолчанию это работает только для десериализации RequestBody.
Когда я пытался написать тестовые случаи, используя webTestClient, если я просто написал webTestClient.get (...). Exchange (). HopeBody (BaseItem.class) ...
Он не десериализует элемент в соответствующие подклассы (не экземпляры подклассов).
Обходной путь, о котором я могу думать, - это чтение в виде String и использование моего собственного десериализатора. Но не уверен, есть ли какие-либо другие способы, чтобы добиться этого изящно.
Спасибо