Swagger异常:导致java.lang.NumberFormatException: For input string: ""数字格式错误

出现问题

在做后台项目接口开发时,使用Swagger测试接口,总是会报异常。SpringBoot项目中使用Swagger作为文档工具,每次在使用它的文档时,IDE工具的控制台都会打印出如下异常,会让我们感觉很不爽。

**

问题如下:

Swagger异常:导致java.lang.NumberFormatException: For input string: ""数字格式错误
**

**问题原因

**

这是由于实体类使用@ApiModelProperty时,example属性没有赋值导致的,在AbstractSerializableParameter这个类的getExample方法中会将数值属性的example的转换数值类返回,example的默认值是"",因此当example没有赋值时,会出现上面的异常。getExample方法如下
**

解决方案

**

只要将每一个数值类型上@ApiModelProperty的example都赋值数字字符串即可。

但是这个解决方法比较麻烦,若将源码中的if (example == null)改为if (example == null || example.isEmpty())就可以解决问题。我下载并修改了源码,将其打包后覆盖了maven仓库的jar包,这样项目代码不需要任何修改就可以解决问题。

同时,我又查看了v1.5.21的代码 ,源码的修改是一样的。其实也可以排除1.5.20版本的swagger-models.jar,引入1.5.21版本的swagger-models.jar。但是考虑到可能由于代码改动较大引发其他问题,因此个人感觉还是在1.5.20版本代码微调最好。

最后把修复过的jar包下载链接放在这里,下载后替换本地仓库对应的文件,然后项目重新导入jar包即可。

例如,我的电脑,通过命令行进入如下目录
Swagger异常:导致java.lang.NumberFormatException: For input string: ""数字格式错误
然后将两个文件复制进去覆盖原文件。

jar包下载地址:https://pan.baidu.com/s/1UhOAD2IgkORZ3OBGwmu70Q  提取码:8hdw