对于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);