【发布时间】:2020-01-20 10:19:05
【问题描述】:
我正在尝试使用 Jackson 从生成的 Json 中排除所有空白字符串。
我知道我可以使用下面的注释来过滤这个,但这似乎不能处理空白字符串。[只有空格的字符串]
@JsonInclude(JsonInclude.Include.NON_EMPTY)
有没有办法做到这一点?
【问题讨论】:
标签: java json jackson fasterxml
我正在尝试使用 Jackson 从生成的 Json 中排除所有空白字符串。
我知道我可以使用下面的注释来过滤这个,但这似乎不能处理空白字符串。[只有空格的字符串]
@JsonInclude(JsonInclude.Include.NON_EMPTY)
有没有办法做到这一点?
【问题讨论】:
标签: java json jackson fasterxml
你可以使用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;
}
}
根据自定义过滤器的 javadoc -
public static final JsonInclude.Include CUSTOM
表示单独的
filter对象的值(由 JsonInclude.valueFilter() 用于值本身,和/或 JsonInclude.contentFilter() 用于结构化类型的内容)将是 用于确定纳入标准。过滤对象的 equals() 用值调用方法进行序列化;如果它返回真值是 排除(即过滤掉);如果包含 false 值。
【讨论】: