访问Swagger:java.lang.NumberFormatException: For input string: ““

你们好,我是金金金。

在这里插入图片描述

场景

启动项目,接着访问Swagger

在这里插入图片描述

依赖版本如下:1.5.20

在这里插入图片描述

查看控制台输出:报错如下

在这里插入图片描述

排查

  1. 首先看报错:For input string: “”:这个错误表明程序尝试将一个空字符串(“”)转换成数值类型(如 int 或 double),但由于空字符串没有有效的数字表示形式,导致转换失败

  2. 由于不是我们编写的代码,看到报错也有一种无力感,我们进到源码里面定位问题,按住ctrl+左键进入AbstractSerializableParameter这个类,定位到getExample方法

    在这里插入图片描述

  3. 打上断点,接着浏览器刷新一下进入断点

    可以看到,AbstractSerializableParameter.javaswagger-models-1.5.20.jar包下面的一个类

    在这里插入图片描述

    在对应的位置打上断点

    在这里插入图片描述

  4. 断点调试

    在这里插入图片描述

原因是在该swagger版本下对于数字类型的字段没有设置example值,导致swagger处理时类型转换异常,算是swagger-models1.5.20的一个小bug

解决

第一种解决方案

手动添加example

  • 通过断点调试已经看出了问题,就是example这个字段为空字符串所导致的,那么修改起来也是非常的简单,加上对应的example 属性就好了

    在这里插入图片描述

这种方式的弊端:费时费力

  • 假设你此时已经写好了项目所有的接口,如果有100个地方需要修改,只能一个一个去修改

第二种解决方案

导入1.5.21(及之后)版本的swagger-models(推荐)

  • 来,看下依赖

在这里插入图片描述

  • 可以看到swagger-models:1.5.20swagger-spring-boot-starter下面,排除掉这个依赖

在这里插入图片描述

  • 排除了之后,单独引入swagger-models:1.5.21

在这里插入图片描述

这种方式的好处:不需要修改任何一处代码,只需要更改依赖就行。

测试

  • 刷新下maven,重新访问下测试,观察控制台输出

总结

总结来说就是1.5.20这个版本下对于数字类型的字段如果没有设置example值会导致swagger处理时类型转换异常, 建议使用第二种方案~升级版本即可

  • 编写有误还请大佬指正,万分感谢。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值