shuhao 2 settimane fa
parent
commit
36c2546b31

+ 82 - 0
admin/src/main/java/com/flyer/foster/config/fastjson/FastJsonCfg.java

@@ -0,0 +1,82 @@
+package com.flyer.foster.config.fastjson;
+
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.math.BigInteger;
+import java.util.List;
+
+@Configuration
+@EnableConfigurationProperties(FastJsonProperties.class)
+public class FastJsonCfg implements WebMvcConfigurer {
+
+    public FastJsonCfg(){
+        System.out.println("FastJsonCfg init");
+    }
+
+    public static SerializerFeature[] serializerFeatures = new SerializerFeature[] {
+            // 字符类型字段如果为null,输出为"",而不是null
+            SerializerFeature.WriteNullStringAsEmpty,
+            // 数值字段如果为null,输出为0,而不是null
+//            SerializerFeature.WriteNullNumberAsZero,
+            // Boolean字段如果为null,输出为false,而不是null
+//            SerializerFeature.WriteNullBooleanAsFalse,
+            // 枚举类型用ToString输出为
+//            SerializerFeature.WriteEnumUsingToString,
+            // 是否输出值为null的字段
+            SerializerFeature.WriteMapNullValue,
+            // list字段如果为null,输出为[],而不是null
+            SerializerFeature.WriteNullListAsEmpty,
+            // 输出格式后的日期
+            SerializerFeature.WriteDateUseDateFormat,
+            // 禁用循环引用
+            SerializerFeature.DisableCircularReferenceDetect,
+            // 忽略错误的get
+            SerializerFeature.IgnoreErrorGetter,
+            // 输出格式化
+            // SerializerFeature.PrettyFormat
+    };
+
+    @Autowired
+    private FastJsonProperties fastJsonProperties;
+
+    @Override
+    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
+        converters.add(0, fastJsonHttpMessageConverters());
+    }
+
+    public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() {
+        // 转换器
+        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
+        // json配置
+        fastConverter.setFastJsonConfig(fastJsonConfig());
+        // 支持类型
+        fastConverter.setSupportedMediaTypes(MediaType.parseMediaTypes(MediaType.APPLICATION_JSON_VALUE));
+        return fastConverter;
+    }
+
+    public FastJsonConfig fastJsonConfig() {
+        // 自定义配置
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        // 序列化
+        fastJsonConfig.setSerializerFeatures(serializerFeatures);
+        // 日期
+        fastJsonConfig.setDateFormat(fastJsonProperties.getDateFormat());
+        // 精度
+        SerializeConfig serializeConfig = SerializeConfig.globalInstance;
+        serializeConfig.put(Long.class, ToStringSerializer.instance);
+        serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
+        serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
+        fastJsonConfig.setSerializeConfig(serializeConfig);
+        return fastJsonConfig;
+    }
+}

+ 16 - 0
admin/src/main/java/com/flyer/foster/config/fastjson/FastJsonProperties.java

@@ -0,0 +1,16 @@
+package com.flyer.foster.config.fastjson;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@Data
+@ConfigurationProperties(prefix = FastJsonProperties.PREFIX)
+public class FastJsonProperties {
+
+    public static final String PREFIX = "fastboot.fastjson";
+
+    private String dateFormat = "yyyy-MM-dd HH:mm:ss";
+
+    private Boolean desensitize = true;
+}