虽然现在不推荐用FastJson了,但是今天遇到这个问题了还是说一下吧。
同事求助我一个问题:
第三方jar包里的一个对象,有些类型为List的属性,值为空list,不是null。使用JSON.toJSONString()方法,得到的json字符串这些属性的值为[]。序列化时怎么才能把这些类型为List的属性忽略掉?
自定义过滤器
可以自由实现你想要的规则
旧写法
PropertyFilter f = new PropertyFilter() {
@Override
public boolean apply(Object o, String key, Object value) {
if (value == null) {
return false;
}
if(value instanceof String && ((String) value).isEmpty()){
return false;
}
if(value instanceof List && ((List) value).size() == 0){
return false;
}
return true;
}
};
///lambda
PropertyFilter filter = (source, key, value) -> {
if (value == null) {
return false;
}
if(value instanceof String && ((String) value).isEmpty()){
return false;
}
if(value instanceof List && ((List) value).size() == 0){
return false;
}
return true;
};
这样写就搞定了
JSON.toJSONString(entity, filter)