|
@@ -1,22 +1,27 @@
|
|
package com.alvin.common.util;
|
|
package com.alvin.common.util;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
|
-import com.alibaba.fastjson.TypeReference;
|
|
|
|
import com.google.gson.Gson;
|
|
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工具类
|
|
* json工具类
|
|
* https://www.yuque.com/tianyunperfect/ygzsw4/bv1mlg
|
|
* https://www.yuque.com/tianyunperfect/ygzsw4/bv1mlg
|
|
* <p>
|
|
* <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
|
|
* @author tianyunperfect
|
|
* @date 2020/05/20
|
|
* @date 2020/05/20
|
|
*/
|
|
*/
|
|
public class JsonUtil {
|
|
public class JsonUtil {
|
|
|
|
+ private static final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();;
|
|
|
|
+
|
|
|
|
+ public JsonUtil() {
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 转换为json字符串
|
|
* 转换为json字符串
|
|
@@ -25,7 +30,7 @@ public class JsonUtil {
|
|
* @return {@link String}
|
|
* @return {@link String}
|
|
*/
|
|
*/
|
|
public static String toJsonStr(Object object) {
|
|
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
|
|
* @param clazz clazz
|
|
* @return {@link T}
|
|
* @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}
|
|
* @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());
|
|
}
|
|
}
|
|
}
|
|
}
|