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

 

相关文章
|
Java
Java - nested exception is java.lang.StackOverflowError
Java - nested exception is java.lang.StackOverflowError
340 0
|
8月前
解决java.lang.ClassCastException
解决java.lang.ClassCastException
88 1
|
3月前
|
Java 容器
Java“NullPointerException”解决
Java中的“NullPointerException”是当程序试图使用一个空对象引用时抛出的异常。解决方法包括:检查变量是否为null、使用Optional类、利用断言和合理初始化变量等。确保代码健壯性,避免运行时错误。
62 0
|
6月前
|
Java 测试技术
【Java】已解决java.lang.NullPointerException异常
【Java】已解决java.lang.NullPointerException异常
866 0
|
6月前
|
Java 测试技术
【Java】已解决java.lang.UnsupportedOperationException异常
【Java】已解决java.lang.UnsupportedOperationException异常
356 0
|
6月前
|
Java API
【Java】已解决java.lang.NoSuchMethodException异常
【Java】已解决java.lang.NoSuchMethodException异常
486 0
|
6月前
|
安全 Java API
【Java】已解决java.lang.SecurityException异常
【Java】已解决java.lang.SecurityException异常
847 0
|
8月前
java.lang.IllegalArgumentException解决方法
java.lang.IllegalArgumentException解决方法
144 1
|
8月前
|
Java 测试技术
使用MybatisPlus时出现的java.lang.NullPointerException异常~
使用MybatisPlus时出现的java.lang.NullPointerException异常~
383 0
使用MybatisPlus时出现的java.lang.NullPointerException异常~
|
安全 前端开发 Java
java.lang.NullPointerException出现的几种原因及解决方案
java.lang.NullPointerException出现的几种原因及解决方案
6458 1

热门文章

最新文章

相关课程

更多