Browse Source

Merge pull request 'feat(json): 支持时间戳和多格式日期反序列化' (#47) from cjl-dev into master

Reviewed-on: http://120.26.116.243:3000/root/alert-backend/pulls/47
pull/44/head
chenjiale 1 month ago
parent
commit
846630a7df
  1. 19
      yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/MultiDateDeserializer.java
  2. 3
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java

19
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/MultiDateDeserializer.java

@ -26,12 +26,27 @@ public class MultiDateDeserializer extends JsonDeserializer<Date> {
@Override @Override
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String text = p.getText().trim(); String text = p.getText().trim();
// ① 如果是纯数字 → 按时间戳处理
if (text.matches("^\\d+$")) {
long t = Long.parseLong(text);
// 支持:10 位秒级时间戳
if (text.length() == 10) {
return new Date(t * 1000);
}
// 支持:13 位毫秒时间戳
return new Date(t);
}
// ② 尝试多种日期格式
for (String format : FORMATS) { for (String format : FORMATS) {
try { try {
return new SimpleDateFormat(format).parse(text); return new SimpleDateFormat(format).parse(text);
} catch (ParseException ignored) { } catch (ParseException ignored) {}
}
} }
throw new RuntimeException("Unsupported date format: " + text); throw new RuntimeException("Unsupported date format: " + text);
} }
} }

3
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.controller.admin.model.model; package cn.iocoder.yudao.module.alert.controller.admin.model.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*; import lombok.*;
@ -17,8 +18,10 @@ import java.math.BigDecimal;
@AllArgsConstructor @AllArgsConstructor
public class Point { public class Point {
@JsonProperty("PointId") @JsonProperty("PointId")
@JsonAlias("pointId")
private String PointId; private String PointId;
@JsonProperty("Description") @JsonProperty("Description")
@JsonAlias("description")
private String Description; private String Description;
private String Unit; private String Unit;
@JsonProperty("Lower") @JsonProperty("Lower")

Loading…
Cancel
Save