diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java index 01913bff..44d0b815 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule; import com.gccloud.dataroom.core.constant.DataRoomConst; import lombok.extern.slf4j.Slf4j; import oracle.sql.CLOB; +import oracle.sql.TIMESTAMP; import org.json.JSONArray; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -41,6 +42,7 @@ public class DataRoomObjectMapperConfiguration { // 解决 接口响应中包含JSONObject 或 JSONArray时, 序列化失败,变成{empty: false} 的问题 simpleModule.addSerializer(JSONArray.class, JSONArraySerializer.instance); simpleModule.addSerializer(CLOB.class, new OracleClobSerializer()); + simpleModule.addSerializer(TIMESTAMP.class, new OracleTimestampSerializer()); objectMapper.registerModule(simpleModule); log.info(DataRoomConst.Console.LINE); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java new file mode 100644 index 00000000..9690b65d --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleTimestampSerializer.java @@ -0,0 +1,42 @@ +package com.gccloud.dataroom.core.config; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import lombok.extern.slf4j.Slf4j; +import oracle.sql.TIMESTAMP; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.IOException; + +/** + * 解决oracle TIMESTAMP类型返回序列化问题 + * @author hongyang + * @version 1.0 + * @date 2024/05/07 10:30 + */ +@Slf4j +public class OracleTimestampSerializer extends JsonSerializer { + + @Override + public void serialize(TIMESTAMP timestamp, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeString(timestampToString(timestamp)); + } + + /** + * timestamp字段处理 + * + * @param timestamp + * @return + */ + public static String timestampToString(TIMESTAMP timestamp) { + String content = ""; + try { + // 转为日期格式 + content = timestamp.stringValue(); + } catch (Exception e) { + log.error(ExceptionUtils.getStackTrace(e)); + } + return content; + } +}