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 显示了很多模型对象,例如 ZoneIdZoneOffsetZoneOffsetTransition 等,这非常令人困惑,因为区域 ID 被序列化为简单的字符串。生成的 API 规范中的情况相同。 如何防止大摇大摆地暴露这些(未使用的)模型对象?

您可以尝试 @ApiModelPropertydataType 设置为 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);
}