我有一个包含集合作为属性的实体:杰克逊解串器 - 改变空的集合空单
public class Entity {
@JsonProperty(value="homes")
@JsonDeserialize(as=HashSet.class, contentAs=HomeImpl.class)
private Collection<Home> homes = new ArrayList<Home>();
}
如果请求包含null作为请求属性:
{
"homes": null
}
然后家园被设置为null 。我想要做的就是把房屋设置为空单。我是否需要为此编写特殊的反序列化器或者是否有一个用于集合?我试过的是这种反序列化器,但它看起来很丑陋(它不是通用的,而是使用实现而不是接口)。
public class NotNullCollectionDeserializer extends JsonDeserializer<Collection<HomeImpl>> {
@Override
public Collection<HomeImpl> deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return jsonParser.readValueAs(new TypeReference<Collection<HomeImpl>>(){});
}
@Override
public Collection<HomeImpl> getNullValue() {
return Collections.emptyList();
}
}
这么几个问题:
- 是否有反序列化期间改变空空收集一些杰克逊的财产?
- 如果第一点没有 - 我是否需要为此编写反序列化器?如果是的话,我可以写通用的吗?