fix:解决oracle数据库的TIMESTAMP类型数据序列化失败问题

main
hong.yang 10 months ago
parent 3d99d17acb
commit da63bc31cd

@ -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);

@ -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<TIMESTAMP> {
@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;
}
}
Loading…
Cancel
Save