栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

杰克逊反序列化期间属性的动态过滤

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

杰克逊反序列化期间属性的动态过滤

另一种方法是使用BeanDeserializerModifier:

private static class BeanDeserializerModifierForIgnorables extends BeanDeserializerModifier {        private java.lang.Class<?> type;        private List<String> ignorables;        public BeanDeserializerModifierForIgnorables(java.lang.Class clazz, String... properties) { ignorables = new ArrayList<>(); for(String property : properties) {     ignorables.add(property); } this.type = clazz;        }        @Override        public BeanDeserializerBuilder updateBuilder(     DeserializationConfig config, BeanDescription beanDesc,     BeanDeserializerBuilder builder) { if(!type.equals(beanDesc.getBeanClass())) {     return builder; } for(String ignorable : ignorables) {     builder.addIgnorable(ignorable);      } return builder;        }        @Override        public List<BeanPropertyDefinition> updateProperties(     DeserializationConfig config, BeanDescription beanDesc,     List<BeanPropertyDefinition> propDefs) { if(!type.equals(beanDesc.getBeanClass())) {     return propDefs; } List<BeanPropertyDefinition> newPropDefs = new ArrayList<>(); for(BeanPropertyDefinition propDef : propDefs) {     if(!ignorables.contains(propDef.getName())) {         newPropDefs.add(propDef);     } } return newPropDefs;        }    }

您可以使用以下命令将修改器注册到ObjectMapper:

BeanDeserializerModifier modifier = new BeanDeserializerModifierForIgnorables(YourType.class, "name");DeserializerFactory dFactory = BeanDeserializerFactory.instance.withDeserializerModifier(modifier);ObjectMapper mapper = new ObjectMapper(null, null, new DefaultDeserializationContext.Impl(dFactory));

然后定义的属性将被忽略。如果使用@JsonAnySetter批注,则可以忽略updateBuilder方法。

马丁问候



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413702.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号