美文网首页
对象泛型互换工具集

对象泛型互换工具集

作者: Yluozi | 来源:发表于2023-09-05 14:56 被阅读0次
    
    package com.zznode.activation.commons.tools.api.util;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.reflect.TypeToken;
    import org.apache.commons.lang3.StringUtils;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Type;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class GsonUtils {
       
       private static final Gson gson = new GsonBuilder().serializeNulls().create();
    
    
       /**
        * <pre>
        * Json格式转换, 由JSON字符串转化到制定类型T
        * 
        * @param json
        * @param cls
        * @return T
        *
        * <pre>
        */
       public static <T> T fromJson(String json, Class<T> cls) {
           if (StringUtils.isBlank(json)) {
               return null;
           }
           return gson.fromJson(json, cls);
       }
       
       /**
        * <pre>
        * Json格式转换, 由JSON字符串转化到泛型的类型
        * 
        * @param json
        * @param typeOfT
        * @return T
        *
        * <pre>
        */
       public static <T> T fromJson(String json, Type typeOfT){
           return gson.fromJson(json, typeOfT);
       }
    
       /**
        * <pre>
        * java对象转化JSON
        *
        * @return String
        *
        * <pre>
        */
       public static String toJson(Object obj) {
           if (obj == null) {
               return "";
           }
           return gson.toJson(obj);
       }
       
       public static <T> ArrayList<T> jsonToList(String json, Class<T> classOfT) {
           Type type = new TypeToken<ArrayList<JsonObject>>(){}.getType();
           ArrayList<JsonObject> jsonObjs = gson.fromJson(json, type);
           
           ArrayList<T> listOfT = new ArrayList<>();
           for (JsonObject jsonObj : jsonObjs) {
               listOfT.add(gson.fromJson(jsonObj, classOfT));
           }
           
           return listOfT;
       }
       
       public static String getJsonObjectAsString(JsonObject jsonObject, String name) {
           if (jsonObject == null || StringUtils.isBlank(name)) {
               return null;
           }
           JsonElement jsonElement = jsonObject.get(name);
           return (jsonElement == null) ? null : jsonElement.getAsString();
       }
    
       public static JsonObject getJsonObjectChild(JsonObject jsonObject, String name) {
           if (jsonObject == null || StringUtils.isBlank(name)) {
               return null;
           }
           JsonElement jsonElement = jsonObject.get(name);
           return (jsonElement == null) ? null : jsonElement.getAsJsonObject();
       }
    
       public static boolean getJsonObjectAsBoolean(JsonObject jsonObject, String name) {
           if (jsonObject == null || StringUtils.isBlank(name)) {
               return false;
           }
           JsonElement jsonElement = jsonObject.get(name);
           return (jsonElement == null) ? false : jsonElement.getAsBoolean();
       }
    
    
     //遍历map
       public static  void blMap(Map map) {
           Set<Map.Entry<String, String>> entryseSet=map.entrySet();
           for (Map.Entry<String, String> entry:entryseSet) {
               System.out.println(entry.getKey()+","+entry.getValue());
           }
       }
    
    
       /**
            * 返回单个实体内指定key为空的属性key
            *
            * @param t   参数
            * @param <T> 类型
            * @return 验证结果
            */
       public static <T> String validateInList(T t) {
           StringBuilder sb = new StringBuilder();
           try {
               for (Field field :t.getClass().getDeclaredFields()) {
                   field.setAccessible(true);
                   sb.append(field.getName()+";");
               }
           }
           //抛出IllegalAccessException异常 抛出其他异常可能会出错
           catch (Exception e) {
               e.printStackTrace();
           }
           return sb.toString();
       }
    
    /**
        * List对象转List<map>
        *
        * @param list
        * @return
        * @throws IllegalAccessException
        */
       public static List<Map<String, Object>> toMap(List<?> list) throws IllegalAccessException {
           List<Map<String, Object>> mapList = new ArrayList<>();
           for (Object o : list) {
               Map<String, Object> map = objToMap(o);
               mapList.add(map);
           }
           return mapList;
       }
    
       /**
        * 对象转map
        *
        * @param object
        * @return
        * @throws IllegalAccessException
        */
       public static Map<String, Object> objToMap(Object object) throws IllegalAccessException {
           Map<String, Object> map = new HashMap<>();
           Field[] fields = object.getClass().getDeclaredFields();
           for (Field field : fields) {
               field.setAccessible(true);
               map.put(field.getName(), field.get(object));
           }
           return map;
       }
    
       public static <T> List<Map<String, T>> jsonToListMaps(String gsonString) {
           List<Map<String, T>> list = null;
           list = gson.fromJson(gsonString, new TypeToken<List<Map<String, T>>>() {
           }.getType());
           return list;
       }
    
       public static <T> Map<String, T> jsonToMaps(String gsonString) {
           Map<String, T> map = null;
           map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
           }.getType());
           return map;
       }
    
    
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:对象泛型互换工具集

          本文链接:https://www.haomeiwen.com/subject/pyshvdtx.html