Jelajahi Sumber

洗车调试

skyline 1 hari lalu
induk
melakukan
06eb2df629

+ 22 - 0
car-wash-common/src/main/java/com/kym/common/config/JacksonConfig.java

@@ -73,6 +73,16 @@ public class JacksonConfig {
         }
     }
 
+    /**
+     * 处理Boolean为null,序列化为false
+     */
+    public class MyNullBooleanJsonSerializer extends JsonSerializer {
+        @Override
+        public void serialize(Object value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException {
+            jsonGenerator.writeBoolean(false);
+        }
+    }
+
     /**
      * @author skyline
      * @description 解决后端long类型返回前端精度丢失问题(前端number类型支持17为,本项目id为long19为,最后两位会变成00)
@@ -105,6 +115,8 @@ public class JacksonConfig {
          */
         private JsonSerializer nullNumberJsonSerializer = new MyNullNumberJsonSerializer();
 
+        private JsonSerializer nullBooleanJsonSerializer = new MyNullBooleanJsonSerializer();
+
         private JsonSerializer longSerializer = new JsonLongSerializer();
 
 
@@ -127,6 +139,8 @@ public class JacksonConfig {
                     if(isLongType(writer)){
                         writer.assignSerializer(this.longSerializer);
                     }
+                } else if (isBooleanType(writer)) {
+                    writer.assignNullSerializer(this.nullBooleanJsonSerializer);
                 } else {
                     writer.assignNullSerializer(this.nullJsonSerializer);
                 }
@@ -156,6 +170,14 @@ public class JacksonConfig {
             return clazz.equals(Integer.class) || clazz.equals(Long.class);
         }
 
+        /**
+         * 判断是boolean类型
+         */
+        protected boolean isBooleanType(BeanPropertyWriter writer) {
+            Class clazz = writer.getPropertyType();
+            return clazz.equals(Boolean.class) || clazz.equals(boolean.class);
+        }
+
         /**
          * 判断是long类型
          *