JsonMappingException: (was java.lang.NullPointerException)

简介:

使用jackson 序列化Java对象的时候报异常:

Java代码   收藏代码
  1. com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.chanjet.gov.Student["age"])  
  2.     at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:218)  
  3.     at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:183)  
  4.     at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:155)  
  5.     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:512)  
  6.     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:117)  
  7.     at  

 

被序列化的类:

Java代码   收藏代码
  1. package com.chanjet.gov;  
  2.   
  3. import org.springframework.web.bind.annotation.ModelAttribute;  
  4.   
  5. import com.fasterxml.jackson.annotation.JsonAutoDetect;  
  6. import com.fasterxml.jackson.annotation.JsonIgnoreProperties;  
  7. import com.fasterxml.jackson.annotation.JsonInclude;  
  8.   
  9. /** 
  10.  * Created by JasonQin on 2015/7/1. 
  11.  */  
  12. @JsonAutoDetect  
  13. @JsonIgnoreProperties(ignoreUnknown = true)  
  14. @JsonInclude(JsonInclude.Include.NON_NULL)  
  15. public class Student  {  
  16.   
  17.     public Student() {  
  18.     }  
  19.   
  20.     /*** 
  21.      * 用户数显示名称 
  22.      */  
  23.     public String name;  
  24.     /*** 
  25.      * 每用户的免费存储空间 
  26.      */  
  27.     public Integer age;  
  28.   
  29.   
  30.     @ModelAttribute("name")  
  31.     public String getName() {  
  32.         return name;  
  33.     }  
  34.   
  35.     @ModelAttribute("age")  
  36.     public int getAge() {  
  37.         return age;  
  38.     }  
  39. }  

测试方法:

Java代码   收藏代码
  1. @Test  
  2.     public void test_PolicyInfo(){  
  3.         ObjectMapper mapper = new ObjectMapper();  
  4.         Student s=new Student();  
  5.           
  6.         try {  
  7.             System.out.println(mapper.writeValueAsString(s));  
  8.         } catch (JsonGenerationException e) {  
  9.             e.printStackTrace();  
  10.         } catch (JsonMappingException e) {  
  11.             e.printStackTrace();  
  12.         } catch (IOException e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.     }  

  原因:Student 类中成员变量age的属性是Integer(包装类型),但是在对应的getter方法中,返回的却是基本类型int.

解决方法:

方式一:修改getter方法,返回值改为包装类型Integer

方式二:

修改getter方法为:

Java代码   收藏代码
  1. @ModelAttribute("age")  
  2.     public int getAge() {  
  3.         if(age==null){  
  4.             return 0;  
  5.         }  
  6.         return age;  
  7.     }  

 

参考:http://www.cnblogs.com/jimmy-c/p/3978799.html

 

相关文章
|
6月前
|
Java Spring
【Java异常】java.lang.ClassCastException: java.io.NotSerializableException cannot be cast to java.lang.S
【Java异常】java.lang.ClassCastException: java.io.NotSerializableException cannot be cast to java.lang.S
30 0
|
16天前
java.lang.IllegalArgumentException解决方法
java.lang.IllegalArgumentException解决方法
6 1
|
15天前
java.lang.UnsupportedOperationException解决方法
java.lang.UnsupportedOperationException解决方法
17 0
|
4月前
|
Java
【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
【Java报错】java.lang.ClassCastException: xxxClass cannot be cast to java.lang.Comparable 问题重现+解决
40 0
|
5月前
|
Java 数据库连接 数据库
解决Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
解决Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
|
5月前
|
Java
|
9月前
|
关系型数据库 MySQL 数据库
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常,亲测有效
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常的正确解决方法,亲测有效!!!
287 0
|
10月前
|
Java 测试技术
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration
71 0
|
11月前
|
关系型数据库 MySQL Java
IDEA中:出现java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
IDEA中:出现java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
114 0
|
Java
Caused by: java.lang.NoSuchFieldError: REFLECTION
Caused by: java.lang.NoSuchFieldError: REFLECTION
508 0
Caused by: java.lang.NoSuchFieldError: REFLECTION