在Jackson看来,如何获取类的属性列表?

在Jackson看来,如何获取类的属性列表?,第1张

在Jackson看来,如何获取类的属性列表?

使用Jackson,您可以内省一个任意类以获取可用的JSON属性:

// Construct a Jackson JavaType for your classJavaType javaType = mapper.getTypeFactory().constructType(MyDto.class);// Introspect the given typeBeanDescription beanDescription = mapper.getSerializationConfig().introspect(javaType);// Find propertiesList<BeanPropertyDefinition> properties = beanDescription.findProperties();

BeanPropertyDefinition
列表应为您提供有关JSON属性所需的详细信息。


@JsonIgnoreProperties
类级别的注释不考虑与上面提到的方法。但是您可以使用
AnnotationIntrospector
来获取在类级别忽略的属性:

// Get class level ignored propertiesSet<String> ignoredProperties = mapper.getSerializationConfig().getAnnotationIntrospector()        .findPropertyIgnorals(beanDescription.getClassInfo()).getIgnored();

然后过滤

properties
除去存在于中的属性
ignoredProperties

// Filter properties removing the class level ignored onesList<BeanPropertyDefinition> availableProperties = properties.stream()        .filter(property -> !ignoredProperties.contains(property.getName()))        .collect(Collectors.toList());

即使为您的班级定义了混入,此方法也有效。


AnnotationIntrospector#findPropertyIgnorals(Annotated)
方法在Jackson
2.8中引入。该
AnnotationIntrospector#findPropertiesToIgnore(Annotated,boolean)
方法可用于旧版本(但自Jackson
2.8起已弃用)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5134218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存