使用swagger2.9.2,報For input string: 「」錯誤

什麼是swagger?

Swagger是一個規範和完整的框架,用於生成、描述、調用和可視化RESTful風格的Web服務。簡單來講,Swagger是一個功能強大的接口管理工具,而且提供了多種編程語言的先後端分離解決方案。java

使用swagger2.9.2,報java.lang.NumberFormatException:For input string: 「」錯誤,解決方案:

springfox-swagger 2.9.2 內置的swagger-models1.5.20 會引發Long類型格式轉換異常,報錯以下:
imagespring

這段報錯的意思是,在將空串"",轉換爲Long類型時出現異常。編程

具體緣由:

項目中不少地方都使用了swagger註解,但對Long類型添加註解時未指定example值,好比:後端

@ApiModelProperty(value = "鏈碼id")
 private Long id;

進入AbstractSerializableParameter類查看 getExample()方法
imageapi

復現異常:框架

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="" ,直接返回
imagespa

相關文章
相關標籤/搜索