为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Jackson 时如何避免反序列化 JSON 字符串中的空 JSON 数组元素

使用 Jackson 时如何避免反序列化 JSON 字符串中的空 JSON 数组元素

Helenr 2022-07-20 16:18:06
我正在使用 Jackson 2 库,并且正在尝试对 JSON 响应进行反序列化,如下所示:{    "employee": [    {},    {        "Details": [            {                "Name": "value",                "Lastname": "value"            }        ]    }]}由于某些原因,我的员工数组中有一个空元素。在反序列化过程中是否可以丢弃该元素并避免反序列化它?目前,我的代码将空员工反序列化为具有空字段的员工 POJO 类。我的代码如下所示:ObjectMapper mapper = new ObjectMapper();Empoyee[] array = mapper.readValue(json, Empoyee[].class);PS。我无法触摸 JSON 响应。就是这样...
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您需要empty在反序列化过程后编写自定义反序列化器或过滤掉对象。第二种方法听起来更容易,因为除了 bean 的自定义反序列化器之外,您需要扩展已经实现的数组反序列化器 ( com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer) 并过滤掉nullemptybean。

查看完整回答
反对 回复 2022-07-20
?
炎炎设计

TA贡献1808条经验 获得超4个赞

首先,请确保您有 setter、getter 和构造函数,之后,您可以使用以下内容:

Employee employee = mapper.readValue(yourJson, Employee.class);


查看完整回答
反对 回复 2022-07-20
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

希望它会帮助你。


ObjectMapper mapper = new ObjectMapper();

mapper.setSerializationInclusion(Include.NON_NULL);

mapper.setSerializationInclusion(Include.NON_EMPTY); 

或者


ObjectMapper mapper = new ObjectMapper ().configure(

        DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).setSerializationInclusion(

                JsonInclude.Include.NON_NULL);


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 300 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信