给定以下请求:
/enterprises-api/{{version}}/enterprises?query={"searchType":"FOUNDERSEARCH","maxResult":"61",...}
或者
/enterprises-api/{{version}}/enterprises?query={"searchType":"NAMEORADDRESSSEARCH","maxResult":"61",...}
我已经成功将查询反序列化为FounderSearch或NameOrAddressSearch对象,具体取决于searchType属性。
但是,由于这不是顶级对象,因此忽略了Javax验证。我该如何解决这个问题? 顶层对象:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "searchType")
@JsonSubTypes({
@JsonSubTypes.Type(value = FounderSearch.class, name = "FOUNDERSEARCH"),
@JsonSubTypes.Type(value = NamerOrAddressSearch.class, name = "NAMEORADDRESSSEARCH")
})
public abstract class Query {
public abstract boolean isFounderSearch();
}
其中一个子级对象:
@Data
public class FounderSearch extends QueryObject {
@Min(1) @Max(60)
private Integer maxResult = 20;
@Pattern(regexp = "\\d{11}")
private String personNumber;
private List<CodeType> functions;
private Boolean activeFunctions;
public boolean isFounderSearch() {
return true;
}
public SearchType getSearchType() {
return SearchType.FOUNDERSEARCH;
}
}