2014-09-02 57 views
1
objectMapper = new ObjectMapper(); 
objectMapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS, false); 

我用上面的代碼來禁用標註,但當運行到傑克遜串行拋NullPointerException異常時禁用註釋

protected void _addMixUnders(Method src, AnnotatedMethod target) 
{ 
    for (Annotation a : src.getDeclaredAnnotations()) { 
     if (_annotationIntrospector.isHandled(a)) { 
      target.addIfNotPresent(a); 
     } 
    } 
} 

在AnnotatedClass,_annotationIntrospector是空,因此它拋出NullPointerException異常。 我該怎麼辦?謝謝。

java.lang.NullPointerException 
at org.codehaus.jackson.map.introspect.AnnotatedClass._addMixUnders(AnnotatedClass.java:974) 
at org.codehaus.jackson.map.introspect.AnnotatedClass._addMemberMethods(AnnotatedClass.java:637) 
at org.codehaus.jackson.map.introspect.AnnotatedClass.resolveMemberMethods(AnnotatedClass.java:413) 
at org.codehaus.jackson.map.introspect.BasicClassIntrospector.classWithCreators(BasicClassIntrospector.java:185) 
at org.codehaus.jackson.map.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:157) 
at org.codehaus.jackson.map.introspect.BasicClassIntrospector.forSerialization(BasicClassIntrospector.java:96) 
at org.codehaus.jackson.map.introspect.BasicClassIntrospector.forSerialization(BasicClassIntrospector.java:16) 
at org.codehaus.jackson.map.SerializationConfig.introspect(SerializationConfig.java:973) 
at org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:251) 
at org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782) 
at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:758) 
at org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:380) 
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.resolve(BeanSerializerBase.java:307) 
at org.codehaus.jackson.map.ser.impl.SerializerCache.addAndResolveNonTypedSerializer(SerializerCache.java:159) 
at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:744) 
at org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:344) 
at org.codehaus.jackson.map.ser.StdSerializerProvider.findTypedValueSerializer(StdSerializerProvider.java:420) 
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:601) 
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.writeValueAsString(ObjectMapper.java:2097) 
+0

什麼版本的傑克遜?你想要序列化什麼? – 2014-09-02 05:37:27

+0

使用jackson 1.9.13序列化類型爲enum的字段。如果沒有枚舉字段,則序列化可以。 – dustdn 2014-09-02 06:01:36

+0

請發佈一個完全可重現的示例以及您獲得的異常堆棧跟蹤。 – 2014-09-02 06:03:41

回答

1

我知道這是晚了3年,但對於後人,這裏是我工作:

// Don't use this: 
// objectMapper.disable(SerializationConfig.Feature.USE_ANNOTATIONS); 
// Use this instead: 
objectMapper.setAnnotationIntrospector(AnnotationIntrospector.nopInstance()); 

這1.9.13-Atlassian的-1爲我工作。