ObjectMapper如果某些字段无法转换为对象的默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ObjectMapper如果某些字段无法转换为对象的默认值相关的知识,希望对你有一定的参考价值。

我是Java的新手,因此很抱歉,如果这个问题未达到所需的标准:我正在从平面mongodb表中加载数据,并希望将所有文档写入Pojo,因此我将其称为DataClass。我的问题是,在某些情况下,字段的类型不正确。在下面的代码中,我使用mapper.readValue读取Json并将其投射到对象。如果其中一个字段错误,则整个循环失败。有没有一种方法可以逐个元素地进行操作,而忽略出现故障或设置默认值的情况?

List<DataClass> result = new ArrayList<>();
FindIterable<Document> documents = getCollection().find();
for (Document doc : documents) {
    result.add(mapper.readValue(doc.toJson(), DataClass.class));

任何建议将不胜感激。

答案

我猜您正在寻找,

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

如果传递的json具有未知属性,这不会使序列化失败。

此外,根据文档,

JsonMappingException,如果输入的JSON结构与结构不匹配 预期结果类型(或存在其他不匹配问题)

如果朝那个方向看,您可以抓住JsonMappingException

以上是关于ObjectMapper如果某些字段无法转换为对象的默认值的主要内容,如果未能解决你的问题,请参考以下文章

ObjectMapper 无法处理带有遗留枚举(类)的映射对象

Swift 3 ObjectMapper - 将 URLSession 结果转换为 Map 对象失败

jackson中objectMapper的使用

Jackson工具使用

Jackson怎样可以把null的属性转换为空字符

Swift:如何将带有 Alamofilre 或 SwiftyJSON 的 JSON 字符串转换为 ObjectMapper?