如何在Swagger-ui中隐藏嵌套属性仅用于特定响应?

uajslkp6  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(213)

我有一个具有如下属性的类。

Class AnimalResponse {

@JsonProperty("animals")
private List<Animal> animals = new ArrayList<>();

@JsonProperty("someOtherAttributes")
private List<someOtherAttribute> someOtherAttributes= new ArrayList<>();

}

Animal.class如下所示:

Class Animal {

@JsonProperty("id")
private int id;

@JsonProperty("name")
private String name;

@JsonProperty("height")
private float height;
}

我不想序列化Animal.class内的属性height
因此,我执行以下两个步骤:
1.我创建了一个mixIn,忽略高度
公共接口高度忽略混合输入{

@JsonIgnore
     String getHeight();

}
1.在序列化期间,我添加了这个mixin。
这个方法是一个新的对象Map器,它是一个类的对象Map器。
这个很好用。


**Note: Animal.class is used by other classes.**

我也不想在Swagger UI中显示此height。如何执行此操作?
我不能将@ApiModelProperty(hidden=true)添加到height,因为Animal.class被其他类使用,它们希望它在Swagger UI中可见。因此,我只想在Swagger UI中将它从AnimalResponse中删除。我该如何操作?

2izufjch

2izufjch1#

创建两个不同的DTO类。一个带有height字段,另一个不带有height字段。
这是因为对于一个类,swagger用户将使用一个链接两次--您可以通过展开swagger UI页面底部的“模型”块来查看这一点。

相关问题