序列化前,如图所示:
解决方式,序列化日期(localdatetime)格式
步骤一、添加序列化类
package com.abliner.test.common.configure;import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;import java.io.IOException;
import java.lang.reflect.Type;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class LocalDateTimeSerializer implements ObjectSerializer {public static final LocalDateTimeSerializer instance = new LocalDateTimeSerializer();private static final String defaultPattern = "yyyy-MM-dd HH:mm:ss";public LocalDateTimeSerializer() {}@Overridepublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {SerializeWriter out = serializer.out;if (object == null) {out.writeNull();} else {LocalDateTime result = (LocalDateTime) object;out.writeString(result.format(DateTimeFormatter.ofPattern(defaultPattern)));}}}
步骤二
package com.abliner.test.common.configure;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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://192.168.1.10:8081")// 是否发送Cookie.allowCredentials(true).allowedMethods("GET", "POST", "PUT", "DELETE");}@Bean//使用@Bean注入fastJsonHttpMessageConvertpublic HttpMessageConverter fastJsonHttpMessageConverters() {//定义一个Convert转换消息的对象FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();FastJsonConfig fastJsonConfig = new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);SerializeConfig.globalInstance.put(Long.class, ToStringSerializer.instance);SerializeConfig serializeConfig = SerializeConfig.globalInstance;serializeConfig.put(LocalDateTime.class, LocalDateTimeSerializer.instance);fastJsonConfig.setSerializeConfig(serializeConfig);fastConverter.setFastJsonConfig(fastJsonConfig);/*但是MappingJackson2HttpMessageConverter里面支持的MediaTypes为application/json*/List<MediaType> fastMediaTypes = new ArrayList<>();fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);fastConverter.setSupportedMediaTypes(fastMediaTypes);HttpMessageConverter<?> converter = fastConverter;return converter;}@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {/*排除掉Jackson*/for (int i = converters.size() - 1; i >= 0; i--) {if (converters.get(i) instanceof MappingJackson2HttpMessageConverter) {converters.remove(i);}}converters.add(fastJsonHttpMessageConverters());}/*** 处理静态资源无法访问** @param registry*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 解决静态资源无法访问registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");// 解决swagger无法访问registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");// 解决swagger的js文件无法访问registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}}
主要是添加如图所示代码:
最后序列化完成示例图: