在 Dropwizard 中为 swagger.json 中的定义生成 snakecase 格式
Generation of snakecase format for definitions in swagger.json in Dropwizard
我正在为我们的项目使用 dropwizard 框架,在该项目中我使用 @JsonSnakeCase 注释将格式从 CamelCase 转换为 snake_case。但是当我尝试使用 swagger 注释生成 swagger.json 时,它会生成 CamelCase 中的定义。我需要设置 swagger 中的任何配置,以将属性格式从 CamelCase 更改为 snake_case 吗?
我的模型class:
@Data
@JsonSnakeCase
public class ServiceRequest {
@NotNull
private Long categoryId;
@NotNull @NotEmpty
private String serviceName;
@NotNull @NotEmpty
private String serviceDesc;
private boolean isRootService;
private Long parentServiceId;
private String imageLink;
private String imageDescription;
private String videoLink;
private String serviceHelpText;
}
这就是 swagger.json 的生成方式
"ServiceRequest": {
"type": "object",
"required": [
"categoryId",
"serviceDesc",
"serviceName"
],
"properties": {
"categoryId": {
"type": "integer",
"format": "int64"
},
"serviceName": {
"type": "string"
},
"serviceDesc": {
"type": "string"
},
"parentServiceId": {
"type": "integer",
"format": "int64"
},
"imageLink": {
"type": "string"
},
"imageDescription": {
"type": "string"
},
"videoLink": {
"type": "string"
},
"serviceHelpText": {
"type": "string"
},
"rootService": {
"type": "boolean",
"default": false
}
}
},
Swagger 的默认 ObjectMapper
不考虑这一点。您可以指定自己的映射器以供 swagger 用于模型转换。
ObjectMapper converter = new ObjectMapper();
converter.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
ModelConverters.getInstance().addConverter(new ModelResolver(converter));
仅供参考 ModelConverter
是 Swagger
核心的单例。所以这可能会影响所有使用它的地方。
我正在为我们的项目使用 dropwizard 框架,在该项目中我使用 @JsonSnakeCase 注释将格式从 CamelCase 转换为 snake_case。但是当我尝试使用 swagger 注释生成 swagger.json 时,它会生成 CamelCase 中的定义。我需要设置 swagger 中的任何配置,以将属性格式从 CamelCase 更改为 snake_case 吗?
我的模型class:
@Data
@JsonSnakeCase
public class ServiceRequest {
@NotNull
private Long categoryId;
@NotNull @NotEmpty
private String serviceName;
@NotNull @NotEmpty
private String serviceDesc;
private boolean isRootService;
private Long parentServiceId;
private String imageLink;
private String imageDescription;
private String videoLink;
private String serviceHelpText;
}
这就是 swagger.json 的生成方式
"ServiceRequest": {
"type": "object",
"required": [
"categoryId",
"serviceDesc",
"serviceName"
],
"properties": {
"categoryId": {
"type": "integer",
"format": "int64"
},
"serviceName": {
"type": "string"
},
"serviceDesc": {
"type": "string"
},
"parentServiceId": {
"type": "integer",
"format": "int64"
},
"imageLink": {
"type": "string"
},
"imageDescription": {
"type": "string"
},
"videoLink": {
"type": "string"
},
"serviceHelpText": {
"type": "string"
},
"rootService": {
"type": "boolean",
"default": false
}
}
},
Swagger 的默认 ObjectMapper
不考虑这一点。您可以指定自己的映射器以供 swagger 用于模型转换。
ObjectMapper converter = new ObjectMapper();
converter.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
ModelConverters.getInstance().addConverter(new ModelResolver(converter));
仅供参考 ModelConverter
是 Swagger
核心的单例。所以这可能会影响所有使用它的地方。