我正在使用Jackson 2库,并且试图反序列化JSON响应,如下所示:
{
"employee": [
{},
{
"Details": [
{
"Name": "value",
"Lastname": "value"
}
]
}
]}
由于某些原因,我的雇员数组中有一个空元素。在反序列化过程中是否可以丢弃该元素并避免反序列化?目前,我的代码将空员工反序列化为具有空字段的Employee POJO类。
我的代码如下:
ObjectMapper mapper = new ObjectMapper();
Empoyee[] array = mapper.readValue(json, Empoyee[].class);
PS。我无法触摸JSON响应。就是这样...
答案 0 :(得分:1)
您需要编写自定义反序列化程序或在反序列化过程之后滤除empty
对象。第二种方法听起来容易得多,因为除了针对bean的自定义反序列化程序之外,您还需要扩展已实现的针对数组(com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer
)的反序列化程序,并过滤掉null
或empty
bean。
另请参阅:
答案 1 :(得分:0)
首先,请确保您具有setter,getter和构造函数,之后, 您可以使用以下命令:
Employee employee = mapper.readValue(yourJson, Employee.class);
答案 2 :(得分:0)
希望它会对您有所帮助。
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);