Swagger UI 在使用 ZoneId 和 jackson-datatype-jsr310 时显示嵌套模型对象
Swagger UI shows nested model objects when using ZoneId and jackson-datatype-jsr310
我正在使用 Spring、springfox、Jackson 开发 REST API,我的模型 class 包含一个 ZoneId
作为 属性:
@JsonProperty
private ZoneId timeZone;
我在我的依赖项中包含了 jackson-datatype-jsr310 版本 2.9.0.pr4,所以它可以很好地序列化和反序列化预期的。但是我的 swagger-ui 显示了很多模型对象,例如 ZoneId
、ZoneOffset
、ZoneOffsetTransition
等,这非常令人困惑,因为区域 ID 被序列化为简单的字符串。生成的 API 规范中的情况相同。 如何防止大摇大摆地暴露这些(未使用的)模型对象?
您可以尝试 @ApiModelProperty
将 dataType
设置为 string
:
@JsonProperty
@ApiModelProperty(dataType = "string")
private ZoneId timeZone;
如果 dataType
被忽略,您可以使用 Docket
:
@Bean
public Docket configureDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.directModelSubstitute(ZoneId .class, String.class);
}
我正在使用 Spring、springfox、Jackson 开发 REST API,我的模型 class 包含一个 ZoneId
作为 属性:
@JsonProperty
private ZoneId timeZone;
我在我的依赖项中包含了 jackson-datatype-jsr310 版本 2.9.0.pr4,所以它可以很好地序列化和反序列化预期的。但是我的 swagger-ui 显示了很多模型对象,例如 ZoneId
、ZoneOffset
、ZoneOffsetTransition
等,这非常令人困惑,因为区域 ID 被序列化为简单的字符串。生成的 API 规范中的情况相同。 如何防止大摇大摆地暴露这些(未使用的)模型对象?
您可以尝试 @ApiModelProperty
将 dataType
设置为 string
:
@JsonProperty
@ApiModelProperty(dataType = "string")
private ZoneId timeZone;
如果 dataType
被忽略,您可以使用 Docket
:
@Bean
public Docket configureDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.directModelSubstitute(ZoneId .class, String.class);
}