JAVA 对象 转 JSON 值


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

也可以直接在判断中使用 默认值做判断,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值