首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在使用Jackson时从JSON字符串反序列化空JSON元素

如何避免在使用Jackson时从JSON字符串反序列化空JSON元素
EN

Stack Overflow用户
提问于 2019-03-04 18:31:25
回答 3查看 1.6K关注 0票数 0

我正在使用Jackson 2库,并且我试图提供一个JSON响应,如下所示:

代码语言:javascript
复制
{
    "employee": [
    {},
    {
        "Details": [
            {
                "Name": "value",
                "Lastname": "value"
            }
        ]
    }
]}

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

我的代码看起来是:

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
Empoyee[] array = mapper.readValue(json, Empoyee[].class);

PS。我不能触摸JSON响应。这就是它是..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-04 22:49:07

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

另请参阅:

票数 1
EN

Stack Overflow用户

发布于 2019-03-04 19:58:48

首先,请确保您有setters、getters和constructors,在此之后,您可以使用以下内容:

代码语言:javascript
复制
Employee employee = mapper.readValue(yourJson, Employee.class);
票数 0
EN

Stack Overflow用户

发布于 2019-03-04 20:13:41

希望它能帮到你。

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.setSerializationInclusion(Include.NON_EMPTY); 

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper ().configure(
        DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).setSerializationInclusion(
                JsonInclude.Include.NON_NULL);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54989407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档