import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.Objects;
/**
* 存储JSON
*
* @Description TODO
* @Author laowang
* @Date 2023/8/23 16:53
* @Version 1.0
*/
public class SaveJSONUtil {
private static byte EmptyByte;
private static short EmptyShort;
private static int EmptyInt;
private static long EmptyLong;
private static float EmptyFloat;
private static double EmptyDouble;
private static char EmptyChar;
private static boolean EmptyBoolean;
/** 值有效才存储 */
public static JSONObject saveValid(Object object) {
JSONObject jsonObject = new JSONObject();
Field[] fs = object.getClass().getDeclaredFields();
for (Field f : fs) {
f.setAccessible(true);
if (f.isAnnotationPresent(JSONField.class)) {
JSONField field = f.getAnnotation(JSONField.class);
if (!field.serialize()) {
continue;
}
}
Object val = f.get(object);
if (isValidValue(f.getType(), val)) {
jsonObject.put(f.getName(), val);
}
}
return jsonObject;
}
private static boolean isValidValue(Type type, Object val) {
String typeName = type.getTypeName();
if (typeName.equals("byte")) {
byte b = (byte) val;
return b != EmptyByte;
} else if (typeName.equals("short")) {
short s = (short) val;
return s != EmptyShort;
} else if (typeName.equals("int")) {
int i = (int) val;
return i != EmptyInt;
} else if (typeName.equals("long")) {
long l = (long) val;
return l != EmptyLong;
} else if (typeName.equals("float")) {
float f = (float) val;
return f != EmptyFloat;
} else if (typeName.equals("double")) {
double d = (double) val;
return d != EmptyDouble;
} else if (typeName.equals("char")) {
char c = (char) val;
return c != EmptyChar;
} else if (typeName.equals("boolean")) {
boolean b = (boolean) val;
return b != EmptyBoolean;
}
return Objects.nonNull(val);
}
}
java 类型 默认值
boolean false
char '/uoooo'
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
也可以直接在判断中使用 默认值做判断,