Explorar el Código

去除fastjson

tianyunperfect hace 5 años
padre
commit
eee368ee08
Se han modificado 2 ficheros con 53 adiciones y 19 borrados
  1. 0 6
      common/pom.xml
  2. 53 13
      common/src/main/java/com/alvin/common/util/JsonUtil.java

+ 0 - 6
common/pom.xml

@@ -18,12 +18,6 @@
             <artifactId>lombok</artifactId>
             <version>1.18.4</version>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-            <version>1.2.56</version>
-        </dependency>
         <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
         <dependency>
             <groupId>com.google.code.gson</groupId>

+ 53 - 13
common/src/main/java/com/alvin/common/util/JsonUtil.java

@@ -1,22 +1,27 @@
 package com.alvin.common.util;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.TypeReference;
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.List;
+import java.util.Map;
 
 
 /**
  * json工具类
  * https://www.yuque.com/tianyunperfect/ygzsw4/bv1mlg
  * <p>
- * JsonUtil.toObject(str,JsonHello.class)
- * JsonUtil.toObject(str2, new TypeReference<List<MyDay>>(){})
- * JsonUtil.toObject(str2, new TypeReference<JsonHello<Hello>>(){})
+ * JsonUtil.getObject(str,JsonHello.class)
  *
  * @author tianyunperfect
  * @date 2020/05/20
  */
 public class JsonUtil {
+    private static final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();;
+
+    public JsonUtil() {
+    }
 
     /**
      * 转换为json字符串
@@ -25,7 +30,7 @@ public class JsonUtil {
      * @return {@link String}
      */
     public static String toJsonStr(Object object) {
-        return new Gson().toJson(object);
+        return gson.toJson(object);
     }
 
 
@@ -36,18 +41,53 @@ public class JsonUtil {
      * @param clazz   clazz
      * @return {@link T}
      */
-    public static <T> T toObject(String jsonStr, Class<T> clazz) {
-        return JSON.parseObject(jsonStr, clazz);
+    public static <T> T getObject(String jsonStr, Class<T> clazz) {
+        return gson.fromJson(jsonStr, clazz);
     }
 
     /**
-     * 将json字符串 转换为 泛型类、集合等
+     * 支持泛型等复杂类型
+     * new TypeToken<Result<List<Integer>>>(){}
+     * new TypeToken<List<Map<String, T>>>() {}
      *
-     * @param jsonStr        json str
-     * @param tTypeReference t型参考
+     * @param jsonString json字符串
+     * @param typeToken  令牌类型
      * @return {@link T}
      */
-    public static <T> T toObject(String jsonStr, TypeReference<T> tTypeReference) {
-        return JSON.parseObject(jsonStr, tTypeReference);
+    public static <T> T getObject(String jsonString, TypeToken typeToken) {
+
+        return gson.fromJson(jsonString, typeToken.getType());
+    }
+
+    /**
+     * 转为数组
+     * @param jsonString
+     * @param tClass
+     * @param <T>
+     * @return
+     */
+    public static <T> T[] getArray(String jsonString, Class<T> tClass) {
+        return gson.fromJson(jsonString, TypeToken.getArray(tClass).getType());
+    }
+
+    /**
+     * 转为list
+     * @param jsonString
+     * @param tClass
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> getList(String jsonString, Class<T> tClass) {
+        return gson.fromJson(jsonString, new TypeToken<List<T>>() {}.getType());
+    }
+
+    /**
+     * json字符串转成map的
+     *
+     * @param gsonString
+     * @return
+     */
+    public static <T> Map<String, T> getMap(String gsonString) {
+        return gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {}.getType());
     }
 }