2016-07-27 60 views
2

Im试图使用Jackson解析器将Java对象转换为JSON。原始对象通过protobuf来到我的手中,并包含一些特定于Jackson的@annotations。Jackson:Object to String via writeValueAsString:NPE

当我打电话String jsonView = objectMapper.writeValueAsString(values);

我得到这个例外。该对象不包含任何递归值,所以我不清楚为什么我看到这个错误(甚至这个代码路径)。在com.fasterxml.jackson.databind.type.ResolvedRecursiveType.equals空 :

ObjectMapper配置有:objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);(虽然删除它似乎并没有改变任何东西)

显示java.lang.NullPointerException (ResolvedRecursiveType.java:103) at com.fasterxml.jackson.databind.type.TypeBindings $ AsKey.equals(TypeBindings.java:458) at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:940) 在com.fasterxml.jackson.databind.util.LRUMap.get(LRUMap.java:68) at com.fasterxml.jackson.databind.type.TypeFactory ._fromClass(TypeFactory.java:1211) at com.fasterxml.jackson.databind.type.TypeFactory._fromParamType(TypeFactory.java:1384) at com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java :1154) 在com.fasterxml.jackson.databind.type.TypeFactory._resolveSuperInterfaces(TypeFactory.java:1298) 在com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:1243) 在玉米.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:1150) at com.fasterxml.jackson.databind.type.TypeFactory._resolveSuperInterfaces(TypeFactory.java:1298) at com.fasterxml.jackson.databind .type.TypeFactory._fromClass(TypeFactory.java:1247) at com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:115 0) at com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:618) at com.fasterxml.jackson.databind.cfg.MapperConfig.constructType(MapperConfig.java:290) at com。在com.fasterxml.jackson.databind.ser.BeanSerializerFactory.removeIgnorableTypes(BeanSerializerFactory.java:714) at com.fasterxml.jackson.databind处可以更快速地获取.xml.jackson.databind.cfg.MapperConfig.introspectClassAnnotations(MapperConfig.java:320) 。 ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:573) 在com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanSerializer(BeanSerializerFactory.java:390) 在com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanSerializer( BeanSerializerFactory.java:273) at com .fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:225) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:159) at com.fasterxml.jackson.databind .SerializerProvider._createUntypedSerializer(SerializerProvider.java:1272) 在com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1243) 在com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:535 ) 在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.resolve(BeanSerializerBase.java:332) 在com.fasterxml.jackson.databind.ser.SerializerCache.addAndResolveNonTypedSerializer(SerializerCache.java:174) 在玉米.fasterxml.ja ckson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1254) at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider。java:535) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.resolve(BeanSerializerBase.java:332) at com.fasterxml.jackson.databind.ser.SerializerCache.addAndResolveNonTypedSerializer(SerializerCache.java:174) 在com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1254) 在com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:535) 在com.fasterxml.jackson.databind。 ser.std.BeanSerializerBase.resolve(BeanSerializerBase.java:332) 在com.fasterxml.jackson.databind.ser.SerializerCache.addAndResolveNonTypedSerializer(SerializerCache.java:197) 在com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer( SerializerProvider.java:1233) 在com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:499) 在com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:697) 在com.fasterxml.jackson.databind。 ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:270) at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3672) at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java: 3048)

回答