当我们使用ApiModelProperty和示例定义字符串属性时,我的团队正在使用swagger注释1.5.14为文档生成swagger文件:
@ApiModelProperty(example="484799")
private String accountNumber;
这会生成输出:
"accountNumber": 484799
是否可以使用示例值双引号生成帐号:
"accountNumber": "484799"
因为在查看示例时,更容易在字符串值和数值之间进行分析。
以下是我们迄今为止尝试的:
我的环境:Java 1.8,swagger注释1.5.14,swagger 2
提前致谢
我找到了这个问题的原因,它是在Springfox库中的类Swagger2JacksonModule,有一个基于值的方法检查:
private boolean isNotJsonString(final String value) throws IOException {
// strictly speaking, should also test for equals("null") since {"example": null} would be valid JSON
// but swagger2 does not support null values
// and an example value of "null" probably does not make much sense anyway
return value.startsWith("{") // object
|| value.startsWith("[") // array
|| "true".equals(value) // true
|| "false".equals(value) // false
|| JSON_NUMBER_PATTERN.matcher(value).matches(); // number
}
它仅检查值,但忽略在注释上声明的dataType。
您可以在@ApiModelProperty中使用'dataType'元素属性。
@ApiModelProperty(datatype= "String", example="484799")
private String accountNumber;
要么
@ApiModelProperty(datatype= "java.lang.String", example="484799")
private String accountNumber;
如果您使用的是Swagger2,那么@Schema就是选项。 https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations#schema
也许你可以在下面以类似的方式使用String.format()
。
String example="484799"
private String accountNumber = String.format("%s", example)