我有一个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()。expectBody(BaseItem.class)...
它不会将项目反序列化为相应的子类(不是子类的实例)。
我能想到的解决方法是读取String并使用我的自定义反序列化器。但是不确定是否还有其他方法可以优雅地实现这一目标。
谢谢
答案 0 :(得分:1)
已解决,刚刚在基类中找到所需的JsonTypeInfo批注