Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有继承问题的反应式WebTestClient json反序列化_Java_Json_Spring Boot_Spring Webflux_Reactive - Fatal编程技术网

Java 带有继承问题的反应式WebTestClient json反序列化

Java 带有继承问题的反应式WebTestClient json反序列化,java,json,spring-boot,spring-webflux,reactive,Java,Json,Spring Boot,Spring Webflux,Reactive,我有一个API返回一个列表。json输出中的每个项都是从BaseItem继承的子类。 例如 webflux api序列化部分已经完成,并且做得很好 我正在跟踪并将@JsonCreator构造函数添加到我的子类中。但我假设这只适用于默认情况下的RequestBody反序列化 当我尝试使用webTestClient编写测试用例时,如果我只编写webTestClient.get…exchange.expectBodyBaseItem.class 它不会将该项反序列化到相应的子类而不是子类的实例 我能想

我有一个API返回一个列表。json输出中的每个项都是从BaseItem继承的子类。 例如

webflux api序列化部分已经完成,并且做得很好

我正在跟踪并将@JsonCreator构造函数添加到我的子类中。但我假设这只适用于默认情况下的RequestBody反序列化

当我尝试使用webTestClient编写测试用例时,如果我只编写webTestClient.get…exchange.expectBodyBaseItem.class

它不会将该项反序列化到相应的子类而不是子类的实例

我能想到的解决方法是以字符串形式读取并使用自定义的反序列化程序。但不确定是否还有其他方法可以优雅地实现这一点


谢谢

解决了,刚刚在基类中找到了所需的JsonTypeInfo注释

您能用代码片段详细说明一下您的答案吗?这可能会帮助其他人。谢谢
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;
  }
}