我试图使用Jackson解析器将Java对象转换为JSON。原始对象通过protobuf提供给我,并包含一些特定于Jackson的@注释。
当我打电话给String jsonView = objectMapper.writeValueAsString(values);
我明白这个例外。对象不包含任何递归值,所以我不清楚为什么我会看到这个错误(甚至这个代码路径)。
ObjectMapper配置为:objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); (尽管删除它似乎没有改变任何事情)
com.fasterxml.jackson.databind.type.ResolvedRecursiveType.equals(ResolvedRecursiveType.java:103) at com.fasterxml.jackson.databind.type.TypeBindings$AsKey.equals(TypeBindings.java:458) at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:940) at com.fasterxml.jackson.databind.util.LRUMap.get(LRUMap.java:68) at com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.com.fasterxml.jackson.databind.type.TypeFactory._fromParamType(TypeFactory.java:1384) at com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:1154) at com.fasterxml.jackson.databind.type.TypeFactory._resolveSuperInterfaces(TypeFactory.java:1298) at com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:1243) at com.fasterxml.jackson.databind.type.TypeFactory.com.fasterxml.jackson.databind.type.TypeFactory._resolveSuperInterfaces(TypeFactory.java:1298),com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:1247),com.fasterxml.jackson.databind.type.TypeFactory._fromAny(TypeFactory.java:1150),com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:618),com.fasterxml.jackson.databind。cfg.MapperConfig.constructType(MapperConfig.java:290) at com.fasterxml.jackson.databind.cfg.MapperConfig.introspectClassAnnotations(MapperConfig.java:320) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.removeIgnorableTypes(BeanSerializerFactory.java:714) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:573) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanSerializer(BeanSerializerFactory.java:390) at 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) at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1243) 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) at com.fasterxml.jackson.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) at com.fasterxml.jackson.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:197) at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1233) at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:499) at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:697) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:270) at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3672)在com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3048)
发布于 2016-10-11 12:31:12
修正了最新版本(见2.8.1或更高版本):https://github.com/FasterXML/jackson-databind/issues/1302
https://stackoverflow.com/questions/38615468
复制相似问题