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

默认情况下,使用Jackson解析为子类

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

默认情况下,使用Jackson解析为子类

@JsonTypeInfo有一个选项可以指定默认的实现类,但是在进行一些调试后,我发现WrapperObject的“ defaultImpl”已损坏。组态:

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include= JsonTypeInfo.As.WRAPPER_OBJECT, defaultImpl = UnknownProduct.class)

杰克逊实现(AsWrapperTypeDeserializer):

public AsWrapperTypeDeserializer(JavaType bt, TypeIdResolver idRes,        String typePropertyName, boolean typeIdVisible, Class<?> defaultImpl){    super(bt, idRes, typePropertyName, typeIdVisible, null);}

请注意,传递了“
defaultImpl”,但它将被忽略,并且不会使用配置的默认类。我在杰克逊(Jackson)的吉拉(Jira)中找不到解决此问题的记录的票证。

仅对于WRAPPER_OBJECT这是一个问题,defaultImpl对于其他格式也可以正常工作。但是它将更改JSON格式。如果可以更改,则可以使用EXTERNAL_PROPERTY作为默认实现:

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include= JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type", defaultImpl = UnknownProduct.class)

另一个解决方案:如果必须使用WRAPPER_OBJECT,则可以配置Jackson找不到未知的SubType时不会失败:

objectMapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);

它与您的要求并不完全相同,但是在这种情况下,您的产品将为空。可能您可以将null视为未知产品。

*我提交了杰克逊错误的 *更新 :https : //github.com/FasterXML/jackson-
databind/issues/656

更新 此票证已针对2.3和2.4杰克逊解决,希望当将jar重新安装到maven存储库或以新版本安装时,您应该能够使用它。



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

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

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