我正在尝试使用杰克逊从生成的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,则值为
  排除(即过滤掉);如果包含错误值。

07-24 09:19