共计 1417 个字符,预计需要花费 4 分钟才能阅读完成。
什么是 swagger?
Swagger 是一个标准和残缺的框架,用于生成、形容、调用和可视化 RESTful 格调的 Web 服务。简略来说,Swagger 是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端拆散解决方案。
应用 swagger2.9.2,报 java.lang.NumberFormatException:For input string:“”谬误,解决方案:
springfox-swagger 2.9.2 内置的 swagger-models1.5.20 会引起 Long 类型格局转换异样,报错如下:
这段报错的意思是,在将空串 ””, 转换为 Long 类型时出现异常。
具体起因:
我的项目中很多中央都应用了 swagger 注解,但对 Long 类型增加注解时未指定 example 值,比方:
@ApiModelProperty(value = "链码 id")
private Long id;
进入 AbstractSerializableParameter 类查看 getExample() 办法
复现异样:
public static void main(String[] args) {long l = Long.valueOf("");
System.out.println(l);
}
报错如下:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:601)
at java.lang.Long.valueOf(Long.java:803)
at com.lianxin.werm.api.resource.room.RoomForm.main(RoomForm.java:124)
解决办法一
对 Long 类型上的参数或属性上应用 swagger 注解时,指定 example 的值为数值型,比方:
@ApiModelProperty(value = "链码 id",example="1")
private Long id;
解决办法二 (终极解决方案)
将 swagger 中的 swagger-models1.5.20 版本升到 1.5.22
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<!-- 排除自带的 1.5.20 版本 -->
<exclusions>
<exclusion> <groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion> </exclusions></dependency>
<!-- 应用 1.5.22-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
新版对这个问题进行了修复,查看 getExample()
如果 example=””,间接返回
正文完