Browse Source

add 基础信息配置工具

GITZYY 7 months ago
parent
commit
1f4217d844

+ 11 - 0
egress-gateway-service-domain/pom.xml

@@ -13,6 +13,7 @@
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <guava.version>33.2.1-jre</guava.version>
     </properties>
 
     <dependencies>
@@ -44,5 +45,15 @@
             <groupId>com.alibaba.cola</groupId>
             <artifactId>cola-component-exception</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 161 - 0
egress-gateway-service-domain/src/main/java/com/hrsk/cloud/eg/domain/common/utils/GsonUtil.java

@@ -0,0 +1,161 @@
+package com.hrsk.cloud.eg.domain.common.utils;
+
+import com.google.gson.*;
+import com.google.gson.reflect.TypeToken;
+import com.hrsk.pangu.tool.exception.BizException;
+import com.sun.org.slf4j.internal.Logger;
+import com.sun.org.slf4j.internal.LoggerFactory;
+import org.apache.commons.lang3.StringUtils;
+
+import java.lang.reflect.Type;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * @author zhangyy
+ * @version 1.0
+ * @description: GsonUtils
+ * @date 2024/8/26 18:46
+ */
+public class GsonUtil {
+    private static   Gson gson =new Gson();
+    private static final Logger log = LoggerFactory.getLogger(GsonUtil.class);
+    /**
+     * @description:  对象转json字符串
+     * @author zhangyy
+     * @date 2024/8/26 18:51
+     * @version 1.0
+     */
+   public static String doToJSONString(Object obj,String  formatDate, boolean ignoreNull,
+                                       boolean pretty){
+      return getGson(formatDate,ignoreNull, pretty).toJson(obj);
+
+   }
+
+    /**
+     * 将对象转为JSON字符串。
+     * 日期转为非时间戳的格式,不忽略null值的字段,不格式化JSON字符串
+     *
+     * @param obj 被转的对象
+     * @return JSON字符串,出异常时抛出
+     */
+    public static String toJSONString(Object obj) {
+        return doToJSONString(obj, "yyyy-MM-dd HH:mm:ss", false, false);
+    }
+
+    /**
+     * 获取ObjectMapper。其本身是线程安全的,可以作为成员变量,但传入的参数不可能每次都一样,所以不使用成员变量。
+     * (获取的Gson,在解析JSON字符串的时候,若字符串新增了目标类未知的字段,不报错,也就是兼容的。
+     * @param dateFormat     日期格式,传null或空串则不设置
+     * @param ignoreNull     是否忽略字段值是null的字段
+     * @param pretty         是否格式化
+     * @return
+     */
+    private static Gson getGson(String dateFormat,
+                                boolean ignoreNull,
+                                boolean pretty) {
+        GsonBuilder gsonBuilder = new GsonBuilder();
+
+        // 默认序列化的格式是 Feb 13, 2020 11:54:55 AM,如果不指定形式,改成序列化成时间戳形式
+        if (StringUtils.isNotBlank(dateFormat)) {
+            gsonBuilder.setDateFormat(dateFormat);
+        } else {
+            // 转json字符串,日期格式使用时间戳
+            gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
+                @Override
+                public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
+                    return new JsonPrimitive(src.getTime());
+                }
+            });
+
+            // json字符串转对象,日期格式使用时间戳的输入
+            gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
+                @Override
+                public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+                    return new Date(json.getAsJsonPrimitive().getAsLong());
+                }
+            });
+        }
+
+        // 默认忽略所有null值字段
+        if (!ignoreNull) {
+            gsonBuilder.serializeNulls();
+        }
+        // 默认不格式化
+        if (pretty) {
+            gsonBuilder.setPrettyPrinting();
+        }
+        return gsonBuilder.create();
+    }
+
+    /**
+     * 传入JSON字符串,不管是对象和列表,都能兼容的方法
+     *
+     * @param jsonStr
+     * @return
+     */
+    public static <T> T parseJSON(String jsonStr, Class<T> clazz, String dateFormat) {
+        try {
+            Gson gson = getGson(dateFormat, false, false);
+            return gson.fromJson(jsonStr, clazz);
+        } catch (Exception e) {
+            throw new BizException("Invalid jsonStr,parse error:" + jsonStr, e);
+        }
+    }
+
+    /** 
+     * @description:  json字符串转对象
+     * @param:  
+     * @return:  
+     * @author zhangyy
+     * @date: 2024/8/26 19:28
+     */ 
+    public static <T> T parseJSON(String jsonStr, Class<T> clazz) {
+        try {
+            Gson gson = getGson("yyyy-MM-dd HH:mm:ss", false, false);
+            return gson.fromJson(jsonStr, clazz);
+        } catch (Exception e) {
+            throw new BizException("Invalid jsonStr,parse error:" + jsonStr, e);
+        }
+    }
+    /**
+     * json 字符串转成某个类的列表
+     *
+     * @param jsonStr    传入的JSON字串
+     * @param clazz      转为什么类型
+     * @param dateFormat 日期格式,传null或空串则不设置,不设置时默认格式化时间戳。当无法格式化的时候抛出异常
+     * @param <T>        类型
+     * @return 转换失败则抛出异常
+     */
+    public static <T> List<T> parseJSONList(String jsonStr, Class<T> clazz, String dateFormat) {
+        try {
+            Gson gson = getGson(dateFormat, false, false);
+            Type listType = TypeToken.getParameterized(ArrayList.class, clazz).getType();
+            return gson.fromJson(jsonStr, listType);
+        } catch (Exception e) {
+            throw new BizException("Invalid jsonStr,parse error:" + jsonStr, e);
+        }
+    }
+    /**
+     * json 字符串转成某个类的列表
+     *
+     * @param jsonStr    传入的JSON字串
+     * @param clazz      转为什么类型
+     * @param <T>        类型
+     * @return 转换失败则抛出异常
+     */
+    public static <T> List<T> parseJSONList(String jsonStr, Class<T> clazz) {
+        try {
+            Gson gson = getGson("yyyy-MM-dd HH:mm:ss", false, false);
+            Type listType = TypeToken.getParameterized(ArrayList.class, clazz).getType();
+            return gson.fromJson(jsonStr, listType);
+        } catch (Exception e) {
+            throw new BizException("Invalid jsonStr,parse error:" + jsonStr, e);
+        }
+    }
+
+
+}

+ 8 - 0
pom.xml

@@ -22,6 +22,7 @@
         <druid-starter.version>1.2.9</druid-starter.version>
         <commons-lang3.version>3.9</commons-lang3.version>
         <commons-codec.version>1.16.1</commons-codec.version>
+        <cola.components.version>>4.3.2</cola.components.version>
     </properties>
 
     <dependencies>
@@ -70,6 +71,13 @@
                 <artifactId>egress-gateway-service-domain</artifactId>
                 <version>1.0-SNAPSHOT</version>
             </dependency>
+            <dependency>
+                <groupId>com.alibaba.cola</groupId>
+                <artifactId>cola-components-bom</artifactId>
+                <version>4.3.2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <!-- 应用模块依赖-end -->
             <dependency>
                 <groupId>org.apache.commons</groupId>