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

我正在使用 Jackson 2 库,并且正在尝试对 JSON 响应进行反序列化,如下所示:


{

    "employee": [

    {},

    {

        "Details": [

            {

                "Name": "value",

                "Lastname": "value"

            }

        ]

    }

]}

由于某些原因,我的员工数组中有一个空元素。在反序列化过程中是否可以丢弃该元素并避免反序列化它?目前,我的代码将空员工反序列化为具有空字段的员工 POJO 类。


我的代码如下所示:


ObjectMapper mapper = new ObjectMapper();

Empoyee[] array = mapper.readValue(json, Empoyee[].class);

PS。我无法触摸 JSON 响应。就是这样...


Helenr
浏览 301回答 3
3回答

桃花长相依

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

炎炎设计

首先,请确保您有 setter、getter 和构造函数,之后,您可以使用以下内容:Employee employee = mapper.readValue(yourJson, Employee.class);

尚方宝剑之说

希望它会帮助你。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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java