如何忽略Swagger中的类属性

时间:2015-09-21 11:20:04

标签: java spring rest spring-mvc swagger

我的问题其实很简单,有没有办法忽略某些库或框架已定义的类中的属性(例如org.springframework.core.io.Resource)?我可以在我自己的类中按@JsonIgnore来调整字段,但是如果我不能更改类本身,那么如何做同样的事情呢?

我想要这个,因为我正在返回ResponseEntity<Resource>并且Swagger-UI向我显示资源的所有嵌套字段,如

"url": {
   "authority": "string",
   "content": {},
   "defaultPort": 0,
   "file": "string",
   "host": "string",
   ....
}

我正在使用Spring Fox和Spring MVC(没有Spring Boot),这两个版本都是最新版本。我现在也没有注释任何字段,我将所有工作留给Swagger。

1 个答案:

答案 0 :(得分:2)

不清楚你是想忽略这个类型本身还是只想忽略它上面的某些属性?

如果你想做后者就是修改你无法控制的类的表示,那么using mixins in jackson应该可以解决你的问题。然而,这可能不是你想要做的。我的猜测是你希望它像它应该的那样进行序列化,但是你希望它在swagger服务描述中只是以不同的方式呈现。

因此,在您的特定情况下,我建议您创建一个替代类型规则as described here,用ResponseEntity<Resource<T>替换T代替您服务中的所有T&#。链接中的示例适用于Collection<T>,但它应该引导您朝着正确的方向前进。