OpenAPI 生成 类 并为生成的 类 应用 JsonView

OpenAPI generated classes and applying JsonView for the generated classes

我正在使用 OpenAPI 来定义我的 api 和资源,类 是自动生成的。我一直在寻找一种方法来拥有单个模型和多个表示形式,所以我正在查看 JsonViews 或 Filters。

有没有办法将 JsonView 添加到生成模型的属性中 类?我还没弄明白。

我找到了一种无需修改生成的 classes 即可实现预期行为的方法。

步骤是:

  • 创建生成的class

    的子class
  • 将要作为内部字段的附加属性添加到子class

  • 将ObjectMapper配置为MapperFeature.DEFAULT_VIEW_INCLUSION = true,这意味着任何没有JsonView模型的属性都将包含在Serialization中(默认为false)

  • 将 JsonView 添加到子class 属性

    @JsonView(Views.Private.class)

和控制器端点的不同 JsonView

@JsonView(Views.Public.class)

有了上面的内容,控制器端点将只序列化生成模型的字段,因为它们没有 JsonView,子class 上带有 JsonView 的字段将在申请。

ObjectMapper 配置的代码片段:

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
    return mapper;
}