Spring boot 定制Springfox一代

Spring boot 定制Springfox一代,spring-boot,swagger,springfox,Spring Boot,Swagger,Springfox,我正在使用springboot和springfox来生成swagger API 我对springfox有两个问题: 1) 它不支持继承 2) 它不支持JsonAnyGetter(就像我一样) 我是否可以重写json生成以在运行时自定义json和 对于第一种情况,我想为每个子类型添加“allOf” 对于第二种情况,我想添加一个自定义字段 我的类是分页的泛型类。在“resourceName”字段下返回分页信息和列表。这是一个参数。 狗的页面包装将导致: { "paging": { ...pagi

我正在使用springboot和springfox来生成swagger API

我对springfox有两个问题: 1) 它不支持继承 2) 它不支持JsonAnyGetter(就像我一样)

我是否可以重写json生成以在运行时自定义json和

对于第一种情况,我想为每个子类型添加“allOf”

对于第二种情况,我想添加一个自定义字段

我的类是分页的泛型类。在“resourceName”字段下返回分页信息和列表。这是一个参数。 狗的页面包装将导致:

{
  "paging": { ...paging info ...},
  "dogs": [
   .. list of dogs ..
  ]
}
类别:

@ApiModel(value = "Page", description = "Page of results")
public class PageWrapper<T> {

    @JsonIgnore
    private List<T> objects;

    @JsonProperty("paging")
    private Paging paging;

    @JsonIgnore
    private String objectsName = "data";

    public PageWrapper(Page<T> page, String objectsName) {
        if (StringUtils.isNotBlank(objectsName)) {
            this.objectsName = objectsName;
        }
        this.objects = page.getContent();
        this.paging = new Paging(page.getTotalElements(), page.getNumber() * page.getSize() + 1, page.getSize());
    }

    @JsonAnyGetter
    @ApiModelProperty(name = "content", value = "Page content")
    public Map<String, List<T>> data() {
        Map<String, List<T>> datas = new HashMap<>();
        datas.put(objectsName, objects);
        return datas;
    }
...
@ApiModel(value=“Page”,description=“结果页”)
公共类页面包装器{
@杰索尼奥雷
私有列表对象;
@JsonProperty(“分页”)
专用寻呼;
@杰索尼奥雷
私有字符串objectsName=“数据”;
公共页面包装器(页面、字符串对象名称){
if(StringUtils.isNotBlank(objectsName)){
this.objectsName=objectsName;
}
this.objects=page.getContent();
this.paging=新分页(page.getTotalElements(),page.getNumber()*page.getSize()+1,page.getSize());
}
@JsonAnyGetter
@ApiModelProperty(name=“content”,value=“页面内容”)
公共地图数据(){
映射数据=新的HashMap();
datas.put(objectsName,objects);
返回数据;
}
...

虽然通过网络公开继承层次结构被认为是一种不好的形式,但仍有一些问题需要解决。它很可能在下一个版本中实现。但是,尚不清楚您对
@JsonAnyxxxx
注释的期望值。如果目的是始终具有分页对象,则它们意味着开放式契约ct(分页包装器)为什么不在规范中明确说明呢?我真的不知道如何不公开继承,这是另一个主题,但我也可能对它感兴趣:)例如,如何公开同时包含dogs和cat的PetList?关于@JsonAnyGetter,我用它来更改json中返回的对象的字段名。我可以“newpagewrapper(list,“dogs”);”和另一个服务中的“newpagewrapper(list,“cats”)”。我必须用资源名称命名列表。