Browse Source

feat(json): 支持时间戳和多格式日期反序列化

- 新增对纯数字时间戳的处理逻辑(支持10位秒级和13位毫秒级)
- 在日期解析失败时尝试多种预定义格式进行解析
- 为Point类字段添加@JsonAlias注解以兼容不同命名风格
pull/47/head
chenjiale 1 month ago
parent
commit
c8c8c3b526
  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
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
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) {
try {
return new SimpleDateFormat(format).parse(text);
} catch (ParseException ignored) {
}
} catch (ParseException ignored) {}
}
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;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
@ -17,8 +18,10 @@ import java.math.BigDecimal;
@AllArgsConstructor
public class Point {
@JsonProperty("PointId")
@JsonAlias("pointId")
private String PointId;
@JsonProperty("Description")
@JsonAlias("description")
private String Description;
private String Unit;
@JsonProperty("Lower")

Loading…
Cancel
Save