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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值