简体   繁体   English

杰克逊序列化器禁用注释时抛出NullPointerException

[英]jackson serializer throw NullPointerException when disable annotation

 objectMapper = new ObjectMapper();
 objectMapper.configure(SerializationConfig.Feature.USE_ANNOTATIONS, false);

I use code above to disable annotations, but when runs to 我使用上面的代码禁用注释,但是当运行到

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

in AnnotatedClass, _annotationIntrospector is null so it throws NullPointerException. 在AnnotatedClass中,_annotationIntrospector为null,因此它将引发NullPointerException。 What should I do ? 我该怎么办 ? thanks. 谢谢。

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)

I know this is 3 years late, but for future generations, here is what worked for me: 我知道这已经晚了3年,但是对于后代来说,这对我有用:

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

This worked for me in 1.9.13-atlassian-1. 这对我来说是1.9.13-atlassian-1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM