繁体   English   中英

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

[英]How to avoid deserialize empty JSON Array elements from JSON String while using Jackson

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

{
    "employee": [
    {},
    {
        "Details": [
            {
                "Name": "value",
                "Lastname": "value"
            }
        ]
    }
]}

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

我的代码如下:

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

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

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

也可以看看:

首先,请确保您具有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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM