GSON 序列化工具类

  1. 序列化 thrift 对象时,能够移除一些无效字段
public class GsonUtils {
    private final static List<String> shouldSkipList = new ArrayList<>();

    //序列化 thrift 对象成 字符串时, 避免一些无效的字段
    static {
        shouldSkipList.add("__isset_bit_vector");
        shouldSkipList.add("optionals");
    }

    private static Gson DEFAULT_GSON = new GsonBuilder().create();

    public static Gson GSON_LOWER_CASE_UNDERSCORES = new GsonBuilder()
            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
            .create();

    public static Gson GSON_SKIP = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() {
        @Override
        public boolean shouldSkipField(FieldAttributes f) {
            return shouldSkipList.contains(f.getName());
        }

        @Override
        public boolean shouldSkipClass(Class<?> aClass) {
            return false;
        }
    }).create();

    public static  <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
        return DEFAULT_GSON.fromJson(json, classOfT);
    }

    public static  <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {
        return DEFAULT_GSON.fromJson(json, typeOfT);
    }

    public static String toJson(Object src) {
        return DEFAULT_GSON.toJson(src);
    }

    public static String toJsonSkipFields(Object src) {
        return GSON_SKIP.toJson(src);
    }
}
posted @   大熊猫同学  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示