fix:【框架】TimestampLocalDateTimeSerializer 的 fieldName 为空的情况,对应 https://github.com/YunaiV/ruoyi-vue-pro/issues/1032

This commit is contained in:
YunaiV 2025-12-06 09:28:00 +08:00
parent cdc4255da1
commit 0df951079b

View File

@ -23,16 +23,18 @@ public class TimestampLocalDateTimeSerializer extends JsonSerializer<LocalDateTi
@Override @Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
String fieldName = gen.getOutputContext().getCurrentName();
Class<?> clazz = gen.getOutputContext().getCurrentValue().getClass();
Field field = ReflectUtil.getField(clazz, fieldName);
// 情况一 JsonFormat 自定义注解则使用它https://github.com/YunaiV/ruoyi-vue-pro/pull/1019 // 情况一 JsonFormat 自定义注解则使用它https://github.com/YunaiV/ruoyi-vue-pro/pull/1019
JsonFormat[] jsonFormats = field.getAnnotationsByType(JsonFormat.class); String fieldName = gen.getOutputContext().getCurrentName();
if (jsonFormats.length > 0) { if (fieldName != null) {
String pattern = jsonFormats[0].pattern(); Class<?> clazz = gen.getOutputContext().getCurrentValue().getClass();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); Field field = ReflectUtil.getField(clazz, fieldName);
gen.writeString(formatter.format(value)); JsonFormat[] jsonFormats = field.getAnnotationsByType(JsonFormat.class);
return; if (jsonFormats.length > 0) {
String pattern = jsonFormats[0].pattern();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
gen.writeString(formatter.format(value));
return;
}
} }
// 情况二默认将 LocalDateTime 对象转换为 Long 时间戳 // 情况二默认将 LocalDateTime 对象转换为 Long 时间戳