java常用的GsonUtils工具类 spring boot

1.Maven项目
如果你是maven项目需要添加依赖

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

2. 工具类
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;


public class GsonUtils {

    //线程安全的
    private static final Gson GSON;
    private static final Gson GSON_NULL; // 不过滤空值
    static {
        GSON = new GsonBuilder().enableComplexMapKeySerialization() //当Map的key为复杂对象时,需要开启该方法
//                .serializeNulls() //当字段值为空或null时,依然对该字段进行转换
//                .excludeFieldsWithoutExposeAnnotation()//打开Export注解,但打开了这个注解,副作用,要转换和不转换都要加注解
                .setDateFormat("yyyy-MM-dd HH:mm:ss")//序列化日期格式  "yyyy-MM-dd"
//                .setPrettyPrinting() //自动格式化换行
                .disableHtmlEscaping() //防止特殊字符出现乱码
                .create();
        GSON_NULL = new GsonBuilder().enableComplexMapKeySerialization() //当Map的key为复杂对象时,需要开启该方法
                .serializeNulls() //当字段值为空或null时,依然对该字段进行转换
//                .excludeFieldsWithoutExposeAnnotation()//打开Export注解,但打开了这个注解,副作用,要转换和不转换都要加注解
                .setDateFormat("yyyy-MM-dd HH:mm:ss")//序列化日期格式  "yyyy-MM-dd"
//                .setPrettyPrinting() //自动格式化换行
                .disableHtmlEscaping() //防止特殊字符出现乱码
                .create();
    }

    //获取gson解析器
    public static Gson getGson() {
        return GSON;
    }

    //获取gson解析器 有空值 解析
    public static Gson getWriteNullGson() {
        return GSON_NULL;
    }


    /**
     * 根据对象返回json  过滤空值字段
     */
    public static String toJsonString(Object object) {
        return GSON.toJson(object);
    }

    /**
     * 根据对象返回json  不过滤空值字段
     */
    public static String toJsonString(Object object, GsonSerializerFeature ser) {
        if (ser == GsonSerializerFeature.WriteMapNullValue){
            return GSON_NULL.toJson(object);
        }
        return GSON.toJson(object);
    }


    /**
     * 将字符串转化对象
     *
     * @param json     源字符串
     * @param classOfT 目标对象类型
     * @param <T>
     * @return
     */
    public static <T> T strToJavaBean(String json, Class<T> classOfT) {
        return GSON.fromJson(json, classOfT);
    }

    /**
     * 将json转化为对应的实体对象
     * new TypeToken<List<T>>() {}.getType()
     * new TypeToken<Map<String, T>>() {}.getType()
     * new TypeToken<List<Map<String, T>>>() {}.getType()
     */
    public static <T> T fromJson(String json, Type typeOfT) {
        return GSON.fromJson(json, typeOfT);
    }

    /**
     * 转成list
     * @param gsonString
     * @param cls
     * @return
     */
    public static <T> List<T> strToList(String gsonString, Class<T> cls) {
        return GSON.fromJson(gsonString, new TypeToken<List<T>>() {
        }.getType());
    }

    /**
     * 转成list中有map的
     * @param gsonString
     * @return
     */
    public static <T> List<Map<String, T>> strToListMaps(String gsonString) {
        return GSON.fromJson(gsonString, new TypeToken<List<Map<String, String>>>() {
        }.getType());
    }

    /**
     * 转成map
     * @param gsonString
     * @return
     */
    public static <T> Map<String, T> strToMaps(String gsonString) {
        return GSON.fromJson(gsonString, new TypeToken<Map<String, T>>() {
        }.getType());
    }


//    public static void main(String[] args) {
//        Result result = new Result("A000", "success");
       toString
//        String s = toJsonString(result);
//        String s1 = toJsonString(result,GsonSerializerFeature.WriteMapNullValue);
//        System.out.println(s);
//        System.out.println(s1);
       strTobean
//        String beanStr = "{\"code\":\"A000\",\"message\":\"success\"}";
//        Result result1 = strToJavaBean(beanStr, Result.class);
//        System.out.println(result.getMessage());
       strToMaps
//        Map<String, String> map = new HashMap<>();
//        map.put("mac", "12312312");
//        map.put("userId", "3sdqxasx");
//        map.put("productId", "201");
//        map.put("trasnId", "12312w12w12w12");
//        Map<String, Object> map1 = strToMaps(map.toString());
//        System.out.println("map to str:" + map.toString());
//        String mac = map.get("mac");
//        System.out.println("get map mac:" + mac);
//
    strToListMaps
///*        Map<String, String> map = new HashMap<>();
//        List<Map<String, String>> maps = new ArrayList<>();
//        map.put("mac", "12312312");
//        map.put("userId", "3sdqxasx");
//        map.put("productId", "201");
//        map.put("trasnId", "12312w12w12w12");
//        maps.add(map);
//        maps.add(map);
//        String s2 = maps.toString();
//        System.out.println("list to string:" + s2);
//        List<Map<String, Object>> maps1 = strToListMaps(s2);
//        System.out.println("list to string:" + maps1.toString());
//        System.out.println("map get field:" + maps1.get(0).get("mac"));*/
     strToList
//        List<Result> lists =  new ArrayList<>();
//        lists.add(result);
//        lists.add(result);
//        lists.add(result);
//        String s2 = toJsonString(lists);
//        System.out.println("list to string :" + s2);
//        List<Result> list = strToList(s2, Result.class);
//        System.out.println("list to string :" + toJsonString(list));
//    }
}

3.枚举类


public enum GsonSerializerFeature {
    /**
     * 过滤空字符串
     */
    WriteMapNullValue
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值