jackSon序列化枚举为字节数组抛空指针异常

程序源自程序猿 2012-10-16 03:00:46
最近在使用jackson的时候遇到这样一个问题,jackson版本1.9.10

ObjectMapper mapper = new ObjectMapper(new SmileFactory());
mapper.setVisibility(JsonMethod.FIELD, Visibility.ANY);
mapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS, false);

mapper.setAnnotationIntrospector(new NopAnnotationIntrospector());

System.out.println(mapper.writeValueAsBytes(ViewTime.FOREVER));

调用writeValueAsBytes此方法将枚举转成字节的时候抛空指针异常,下面是异常信息
org.codehaus.jackson.map.JsonMappingException: [no message for java.lang.NullPointerException]
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:625)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2575)
at org.codehaus.jackson.map.ObjectMapper.writeValueAsBytes(ObjectMapper.java:2114)
at com.myproduct.mobileinternet.cmsinterface.pojo.Configure.main(Configure.java:61)
Caused by: java.lang.NullPointerException
at org.codehaus.jackson.smile.SmileGenerator.writeString(SmileGenerator.java:996)
at org.codehaus.jackson.map.ser.std.EnumSerializer.serialize(EnumSerializer.java:59)
at org.codehaus.jackson.map.ser.std.EnumSerializer.serialize(EnumSerializer.java:24)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
... 4 more
只要注掉
mapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS, false);

mapper.setAnnotationIntrospector(new NopAnnotationIntrospector());
这两行就不会出现此问题,求大神指点这是什么情况。


public enum ViewTime
{
FOREVER(-1), SEVEN_DAY(0), ONE_MONTH(1),TWO_MONTH(2),THREE_MONTH(3),SIX_MONTH(4),ONE_YEAR(5);

private int value;

private ViewTime(int value)
{
this.value = value;
}

public int getValue()
{
return value;
}

public static ViewTime fromValue(int period)
{
switch(period)
{
case -1:
return FOREVER;
case 0:
return SEVEN_DAY;
case 1:
return ONE_MONTH;
case 2:
return TWO_MONTH;
case 3:
return THREE_MONTH;
case 4:
return SIX_MONTH;
case 5:
return ONE_YEAR;
}
return null;
}
@Override
public String toString()
{
return String.valueOf(value);
}
}
...全文
543 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofengxiaoling 2013-07-06
  • 打赏
  • 举报
回复
怎么解决的楼主。
  • 打赏
  • 举报
回复
已解决..
  • 打赏
  • 举报
回复
能否说清楚一点?谢谢[Quote=引用 2 楼 的回复:]

jason解析配置问题,帮顶
[/Quote]
ronghua_liu 2012-10-25
  • 打赏
  • 举报
回复
jason解析配置问题,帮顶
  • 打赏
  • 举报
回复
沉的不见影了...顶上去

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧