使 Swagger 在生成的模型中使用原始 int 和 boolean

Make Swagger use primitive int and boolean in generated models

默认情况下,对于 "type": "boolean" in JSON 规范,Swagger 将在模型中生成一个 Boolean(对象,非原始,可为空)字段。 有没有办法让 Swagger 在模型中生成 boolean(原始的、不可为空的)字段?

基本原理是:Spring MVC 将在无效输入时使用 null 初始化这些字段,这是非常不受欢迎的。最好保留默认值。

intInteger 相同的问题。

注意:Swagger 有自己的 "primitive" 类型概念,这与 Java 原语完全无关,也不是我想要的。

好像不可能。

我看了一下 swagger-core and springfox(Swagger for Spring 基于 API)。我所做的只是找到 converting/translating 基本类型的源代码。

所以在 swagger-core I found PrimitiveType 枚举中。如您所见,没有提到原始 Java 类型,所有 swagger 类型都映射到 Java 包装器。考虑到这个枚举在内部使用并且不能被替换(除非你制作自己的版本)我认为不可能改变这种类型解析行为。

springfox. I found TypeNameExtractor that uses fasterxml's TypeResolver class for resolving types. This class in its turn uses ResolvedPrimitiveType 相同以获取类型映射。如您所见,类型解析也足够深入,所以我想也没有办法以某种方式改变它。

希望我的发现对您有所帮助。