NumberFormatException: For input string: "null"

日志: 
[INFO-2016/08/04/16/:21/:25]ProjectCommonFormController.(78) - 审批[同意]入参-[string]commonFormDtoStr ===={"commonForm":{"id":"1101115577946385"},"taskId":"322055","wfInstanceId":"1101115577859311","content":"","businessKey":"1101115577946385","projectId":"null","cityId":"null"}
[ERROR-2016/08/04/16/:21/:25]XXXXFormController.(91) - 审批流程出错!For input string: "null"
com.alibaba.fastjson.JSONException: For input string: "null"
        at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:467)
        at com.alibaba.fastjson.JSON.parseObject(JSON.java:206)
        at com.alibaba.fastjson.JSON.parseObject(JSON.java:166)
        at com.alibaba.fastjson.JSON.parseObject(JSON.java:287)
        at com.boa.weixin.controller.costmanager.expenses.ProjectCommonFormController.approvalCommonForm(ProjectCommonFormController.java:79)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
      ...................
Caused by: java.lang.NumberFormatException: For input string: "null"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Long.parseLong(Long.java:441)
        at java.lang.Long.parseLong(Long.java:483)
        at com.alibaba.fastjson.util.TypeUtils.castToLong(TypeUtils.java:361)
        at com.alibaba.fastjson.parser.deserializer.LongFieldDeserializer.parseField(LongFieldDeserializer.java:44)
        at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseField(ASMJavaBeanDeserializer.java:81)
        at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer$InnerJavaBeanDeserializer.parseField(ASMJavaBeanDeserializer.java:92)
        at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:231)
        at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.deserialze(ASMJavaBeanDeserializer.java:31)
        at Fastjson_ASM_CommonFormDto_67.deserialze(Unknown Source)
        at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:463)

分析: 

在springmvc的使用中, 前后台传参时, 对后台的DTO对象进行参数绑定,如果是基本类型的包装类, 例如:Integer , Long等等...

开发时要注意控制前端的入参. 做好控制,避免传入"null", "undefined","none"类似的字符串与数值类型映射.

另外, 数字字符串可以转换成整型包装类, 类似: "1231231321" , "12"

字符类型的串可以转换成整型包装类, 类似:  ‘a‘, ‘8‘, ‘#‘

其他的非数字字符串不可以转换成整型包装类,如按照常规的转换(Integer in = Integer.parseInt("null"))或抛出NumberFormatException类似的转换异常.     类似: "asdfasd", "123AA", "b","   "(空格串),""(注意是空串),

当自己需要进行类型转换时可以考虑先通过正则匹配来目标字符串是否满足转换条件, , 满足条件则 通过BigDecimal对象来构造,获取目标类型的取值.

步骤: 正则匹配 String str , if(满足转换正则条件){ BigDecimal data = new BigDecimal(str); return data.IntegerValue(); }

spring的ConversionService可以简要的demo一下.


demo:

package com.boa.test;

import org.springframework.core.convert.ConversionService;import org.springframework.core.convert.support.DefaultConversionService;

/** * Created by boa on 2016/8/4. @desc  用于测试""串转Integer对象的转换异常问题 */public class ExceptionForInputStringNull {    

public static void main(String[] args) {        Person p = new Person();        String str = "";

//spirng的转换器可以将""转换成Integer的null对象.        ConversionService cs = new DefaultConversionService();        Integer integer = cs.convert(str, Integer.class);

//自行去把""转换成integer对象会报异常      //Integer integer = Integer.valueOf(str);

//apache的转换类也不行      //org.apache.commons.beanutils.Converter con = new IntegerConverter();      //Integer integer = (Integer)con.convert(Integer.class, str);

p.setAge(integer);        System.out.println(p.getAge());    }}

class Person {    Integer age;

public Integer getAge() {        return age;    }

public void setAge(Integer age) {        this.age = age;    }}

来自为知笔记(Wiz)

时间: 2024-09-30 16:23:47

NumberFormatException: For input string: "null"的相关文章

For input string: "null"

java.lang.NumberFormatException: For input string: "null"   在开发中你是否遇到过这样的问题,不管请求到的值是什么都能进入不为null或”“的判断中,如下例: Stringtemp=req.getParameter("status");//任务状态 int status= 0;//任务状态   if(temp!=null&&!"".equals(temp))   {    

java.lang.NumberFormatException: For input string: "undefined"

在将字符串转换为数字时导致此错误,解决此问题的思路:1.添加Try catch语句,2.判断字符串是否为数字,将介绍java中判断字符串是否为数字的方法的几种方法. 完整错误信息: java.lang.NumberFormatException: For input string: "undefined" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.pars

SimpleDateFormat高并发下异常java.lang.NumberFormatException: For input string: ""

1. 原因 SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calendar引用来储存的.这样就会导致一个问题,如果你的sdf是个static的, 那么多个thread 之间就会共享这个sdf, 同时也是共享这个Calendar引用, java.lang.NumberFo

java.lang.NumberFormatException: For input string:""

今天写了个java的小程序在运行的时候抛出下面的异常:java.lang.NumberFormatException: For input string: "" .定位到源程序中出错的地方: String[] cols = key.toString().split("    ");   return Integer.parseInt(cols[0]) % numPartitions; 通过查询java API 以及百度,了解到抛NumberFormatExcepti

java.lang.NumberFormatException: For input string: "title"异常

java.lang.NumberFormatException: For input string: "title" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at javax.

Caused by: java.lang.NumberFormatException: For input string: ""

1.错误描述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:453) at java.lang.Long.parseLong(Long.java:483) at org.springfram

java.lang.NumberFormatException: For input string:"filesId"

做项目时候,页面获取出现了这个问题.找了好久一直以为是我字段或者是数据库字段问题导致引起的. 最后才发现是 struts2中jsp我写错了一个参数,一直导致报错.后来改了就好了. 当大家遇到这个问题的时候,记得先看看是不是这个问题,不是的话可以再debug分析下. 对jsp更改的地方,以后要多多注意.自己不要再犯这种低级错误 就是因为这个 变量写错了,导致他找不到塞入数据的泪,所以,下面的一些列 ${freemarkerdetailList.xxxxx}都报 java.lang.NumberFo

Caused by: java.lang.NumberFormatException: For input string: ""

1.错误描写叙述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:453) at java.lang.Long.parseLong(Long.java:483) at org.springfr

解决java.lang.NumberFormatException: For input string: "id"

今天,项目突然报"java.lang.NumberFormatException:For input string:"id"",项目框架是spring,springmvc,hibernate,大致意思是类型转换错误,我的id是Integer类型,报错在<c:foreach>里的option里获取值得时候出问题,说明数据类型不对,就去后台dao去找,查看我的sql,一看我查的是表的部分字段,用的hibernate框架,返回的一个List<object