我正在尝试使用杰克逊从生成的Json中排除所有Blank Strings。
我知道我可以使用下面的注释来对此进行过滤,但这似乎无法处理空白字符串。[仅带有空格的字符串]
@JsonInclude(JsonInclude.Include.NON_EMPTY)
有没有办法做到这一点 ?
最佳答案
您可以使用custom value filter
,请尝试使用此方法,让我知道该方法是否适合您-
@JsonInclude(value = JsonInclude.Include.CUSTOM, valueFilter = CustomFilter.class)
这是自定义过滤器-
class CustomFilter {
public CustomFilter() {
}
@Override
public boolean equals(Object obj) {
if(obj == null)
return true;
if(obj instanceof String){
return ((String)obj).trim().isEmpty();
}
return false;
}
}
根据CUSTOM过滤器的javadoc-
public static final JsonInclude.Include CUSTOM
指示单独的
filter
对象的值(由JsonInclude.valueFilter()用于值本身,和/或
JsonInclude.contentFilter()用于结构化类型的内容)
用于确定纳入标准。过滤对象的equals()
用值调用方法进行序列化;如果返回true,则值为
排除(即过滤掉);如果包含错误值。