接口用String 接收,如何避免转换时的空指针 报错

我现在写一个资料的上传,更新,有一个是价格的字段,我在接口中设置了价格,但是为非必须,但是,下面的一个用Integer.parseInt(price)会在price为空时报错。我该如何解决这个问题呢?
前端 用的是 text的,在接口中,统一用的是String 接收的。其它字段为空时,都不报错,在这个要转换时,为空时,才会报错。

img

img

解决办法:我看上边有人也已经说的差不多了,加入非空判断。是可以

遇到这种问题其实最好加个try catch捕获一下,然后再加入你的逻辑

try {
yourprice= Integer.parseInt(price.trim());
} catch (NumberFormatException e) {
System.out.println(e);
}

补充:如果你是安卓的应用代码:

 if (!TextUtils.isEmpty(price)) {

 }

img


增加非空判断,希望能帮到你,望采纳谢谢!!

为空时你将它置为0啊,转换之前判断是否为空,如果是就让它=0,不是再进行parseInt处理



<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.9</version>
</dependency>
//引入commons-lang3之后直接通过工具类判空再做处理
Integer priceIn = null;
if(StringUtils.isNotBlank(price)){
    priceIn = Integer.parseInt(price)
}

给参数给定一个默认值 @RequestParam注解中有个默认值defaultValue,例如 接收的价格没有传值 默认为0 就将defaultValue="0",你这只是判断是否为空,如果为空的时候给定默认值,在后续系统中使用的时候也是一个不错的解决方案。如果只是判断为空的时候正常的数据类型转换。那么这个可能就不太适用了,需要单独在接口参数上进行一个判断。或者在调用的时候进行判断

cn.hutool.core.util
StrUtil.isNotBlank(price) ,其实parseInt/如果不是数字也会报错,完善的话加个判断是否是数字

加个非空的if条件不就行了

给参数给定一个默认值 @RequestParam注解中有个默认值defaultValue=" " 下面在搞个判断