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;
}
我正在使用 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;
}