@@ -38,7 +38,7 @@ public Jackson2Parser(Settings settings, TypeProcessor typeProcessor, boolean us
3838 super (settings , typeProcessor );
3939 if (!settings .disableJackson2ModuleDiscovery ) {
4040 objectMapper .registerModules (ObjectMapper .findModules (settings .classLoader ));
41- }
41+ }
4242 if (useJaxbAnnotations ) {
4343 AnnotationIntrospector introspector = new JaxbAnnotationIntrospector (objectMapper .getTypeFactory ());
4444 objectMapper .setAnnotationIntrospector (introspector );
@@ -52,7 +52,8 @@ protected BeanModel parseBean(SourceType<Class<?>> sourceClass) {
5252 final BeanHelper beanHelper = getBeanHelper (sourceClass .type );
5353 if (beanHelper != null ) {
5454 for (BeanPropertyWriter beanPropertyWriter : beanHelper .getProperties ()) {
55- Type propertyType = beanPropertyWriter .getGenericPropertyType ();
55+ final Member propertyMember = beanPropertyWriter .getMember ().getMember ();
56+ Type propertyType = getGenericType (propertyMember );
5657 if (propertyType == JsonNode .class ) {
5758 propertyType = Object .class ;
5859 }
@@ -122,6 +123,16 @@ protected BeanModel parseBean(SourceType<Class<?>> sourceClass) {
122123 return new BeanModel (sourceClass .type , superclass , taggedUnionClasses , discriminantProperty , discriminantLiteral , interfaces , properties , null );
123124 }
124125
126+ private static Type getGenericType (Member member ) {
127+ if (member instanceof Method ) {
128+ return ((Method ) member ).getGenericReturnType ();
129+ }
130+ if (member instanceof Field ) {
131+ return ((Field ) member ).getGenericType ();
132+ }
133+ return null ;
134+ }
135+
125136 private static boolean isSupported (JsonTypeInfo jsonTypeInfo ) {
126137 return jsonTypeInfo != null &&
127138 jsonTypeInfo .include () == JsonTypeInfo .As .PROPERTY &&
0 commit comments