Jackson解析数据为空时字段类型产生变化的JSON字段

对于PHP、Python这类动态语言编写的API接口,其返回的JSON经常有这种情况:

1、字段有数据时:

{
    "name":"Test",
    "tags":{
        "caches":"caches",
        "caching":"caching",
        "feeds":"feeds",
        "late-caching":"late caching",
        "speed":"speed"
    }
}

2、字段无数据时:

{
"name":"Test",
"tags":[]
}

可以发现,tags字段有数据时其类型是个集合,而当tags字段无数据时其类型则是个数组……

这就导致无法准确的编写用于映射数据的实体类。

为了应对这种情况,可以在注入Bean时为Jackson配置选项将为空的字符串、数组都映射为空对象(NULL)。

代码:

mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code