自定义过滤功能
This commit is contained in:
parent
abf472bcbb
commit
beb6b074f7
@ -0,0 +1,74 @@
|
|||||||
|
package com.example.demo.common.filter;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class CustomJsonFilter {
|
||||||
|
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
boolean flag = !shouldInclude(obj);
|
||||||
|
log.trace("{} => {}", flag, obj);
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断值是否应该被包含
|
||||||
|
*/
|
||||||
|
private boolean shouldInclude(Object value) {
|
||||||
|
// 处理空字符串
|
||||||
|
if (value instanceof CharSequence) {
|
||||||
|
return !((CharSequence) value).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理空集合
|
||||||
|
if (value instanceof Collection) {
|
||||||
|
return !((Collection<?>) value).isEmpty();
|
||||||
|
}
|
||||||
|
// 处理空Map
|
||||||
|
if (value instanceof Map) {
|
||||||
|
return !((Map<?, ?>) value).isEmpty();
|
||||||
|
}
|
||||||
|
// 处理空数组
|
||||||
|
if (value instanceof Object[]) {
|
||||||
|
return ((Object[]) value).length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理基本类型数组
|
||||||
|
if (value instanceof int[]) {
|
||||||
|
return ((int[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof long[]) {
|
||||||
|
return ((long[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof double[]) {
|
||||||
|
return ((double[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof boolean[]) {
|
||||||
|
return ((boolean[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof char[]) {
|
||||||
|
return ((char[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof byte[]) {
|
||||||
|
return ((byte[]) value).length > 0;
|
||||||
|
}
|
||||||
|
if (value instanceof float[]) {
|
||||||
|
return ((float[]) value).length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理空Optional
|
||||||
|
if (value instanceof Optional) {
|
||||||
|
return ((Optional<?>) value).isPresent();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 其他对象类型,只要不为null就包含
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user