FastJson:自定义序列化Boolean转Integer

时间:2025-04-01 12:42:25
package com.jyusun.origin.basic.common.config.fastjson; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.jyusun.origin.util.DateUtil; import com.google.common.collect.Lists; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import java.nio.charset.Charset; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.List; /** * FastJson 配置类 * * @author jyusun * @since 1.0.0 */ @Configuration @ConditionalOnClass(JSON.class) @ConditionalOnMissingBean(FastJsonHttpMessageConverter.class) @ConditionalOnWebApplication public class FastJsonConfiguration { @Bean public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); converter.setFastJsonConfig(fastJsonConfig()); converter.setSupportedMediaTypes(getSupportedMediaType()); ParserConfig.getGlobalInstance().setAutoTypeSupport(true); return converter; } /** * fastJson的配置 */ private FastJsonConfig fastJsonConfig() { FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, // Map 默认值 SerializerFeature.WriteMapNullValue, // 数组 默认 空数组 SerializerFeature.WriteNullListAsEmpty, // 数值类型 默认为 0 SerializerFeature.WriteNullNumberAsZero, // Boolean 默认为 false SerializerFeature.WriteNullBooleanAsFalse, SerializerFeature.WriteDateUseDateFormat, // 消除循环引用 SerializerFeature.DisableCircularReferenceDetect, // 字段名称排序后输出 SerializerFeature.SortField ); fastJsonConfig.setDateFormat(DateUtil.PATTERN_YYYY_MM_DD_HH_MM_SS); fastJsonConfig.setCharset(Charset.forName("utf-8")); // 自定义Boolean类型序列化配置 fastJsonConfig.getSerializeConfig().put(Boolean.class, new BooleanToIntegerSerializer()); return fastJsonConfig; } /** * 支持的mediaType类型 */ private List<MediaType> getSupportedMediaType() { ArrayList<MediaType> mediaTypes = Lists.newArrayList(); mediaTypes.add(MediaType.APPLICATION_JSON); mediaTypes.add(MediaType.APPLICATION_ATOM_XML); mediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); mediaTypes.add(MediaType.APPLICATION_OCTET_STREAM); mediaTypes.add(MediaType.APPLICATION_PDF); mediaTypes.add(MediaType.APPLICATION_RSS_XML); mediaTypes.add(MediaType.APPLICATION_XHTML_XML); mediaTypes.add(MediaType.APPLICATION_XML); mediaTypes.add(MediaType.IMAGE_GIF); mediaTypes.add(MediaType.IMAGE_JPEG); mediaTypes.add(MediaType.IMAGE_PNG); mediaTypes.add(MediaType.TEXT_EVENT_STREAM); mediaTypes.add(MediaType.TEXT_HTML); mediaTypes.add(MediaType.TEXT_MARKDOWN); mediaTypes.add(MediaType.TEXT_PLAIN); mediaTypes.add(MediaType.TEXT_XML); //增加解析spring boot actuator结果的解析 mediaTypes.add(MediaType.valueOf("application/.v2+json")); return mediaTypes; } }