Parcourir la source

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

YunaiV il y a 6 mois
Parent
commit
0df951079b

+ 11 - 9
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/TimestampLocalDateTimeSerializer.java

@@ -23,16 +23,18 @@ public class TimestampLocalDateTimeSerializer extends JsonSerializer<LocalDateTi
 
     @Override
     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[] jsonFormats = field.getAnnotationsByType(JsonFormat.class);
-        if (jsonFormats.length > 0) {
-            String pattern = jsonFormats[0].pattern();
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
-            gen.writeString(formatter.format(value));
-            return;
+        String fieldName = gen.getOutputContext().getCurrentName();
+        if (fieldName != null) {
+            Class<?> clazz = gen.getOutputContext().getCurrentValue().getClass();
+            Field field = ReflectUtil.getField(clazz, fieldName);
+            JsonFormat[] jsonFormats = field.getAnnotationsByType(JsonFormat.class);
+            if (jsonFormats.length > 0) {
+                String pattern = jsonFormats[0].pattern();
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
+                gen.writeString(formatter.format(value));
+                return;
+            }
         }
 
         // 情况二:默认将 LocalDateTime 对象,转换为 Long 时间戳