Spring boot 在使用fastjson 转换时 LocalDateTime 时间数据类型会带T 处理方案 |
您所在的位置:网站首页 › 项目控制英文 › Spring boot 在使用fastjson 转换时 LocalDateTime 时间数据类型会带T 处理方案 |
在项目开发中 有的个别接口 返回给前端的数据中 日期时间格式 的数据 中间会带 T 我已经在 实体类中加上了格式化 时间 的注解 但是有些接口日期时间出现这个T 有些接口没有 T 经过排查 我发现 出现 T 的接口中 我在返回数据的时候 对数据 使用了 fastjson 下的 JSON.toJSONString() 方法 导致的 带有T R r = JSON.parseObject(JSON.toJSONString(result), R.class);** 使用fastjson 包里的方法 进行json 转换 他会把 时间类型的数据 转换成带有T 的时间数据格式** 处理方案 第一步 写一个 fastJson 配置文件 package com.erp.init.config; 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; /** * User: Json * * Date: 2022/8/24 **/ class FastjsonSerializer implements ObjectSerializer { @Override public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { SerializeWriter out = serializer.getWriter(); if (object == null) { serializer.getWriter().writeNull(); return; } // 对LocalDateTime类型进行格式转化 out.write("\"" + ((LocalDateTime) object).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "\""); } }第二步 把这个配置文件 交给 spring 管理 package com.erp.init.config; import com.alibaba.fastjson.serializer.ObjectSerializer; import com.alibaba.fastjson.serializer.SerializeConfig; import com.erp.init.config.filter.FormTokenInterceptor; import com.erp.init.config.filter.LoginCheckInterceptor; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.time.LocalDateTime; @Configuration public class InitConfig implements WebMvcConfigurer { @Bean public SerializeConfig serializeConfig() { SerializeConfig config = new SerializeConfig(); // 对LocalDateTime类型指定自定义的序列化器 config.put(LocalDateTime.class, objectSerializer()); return config; } @Bean public ObjectSerializer objectSerializer() { return new FastjsonSerializer(); } }第三步 在使用 fastjson的地方 注入 这个 配置文件 @Autowired private SerializeConfig serializeConfig; // 在使用 JSON.toJSONString 方法的时候 把这个 SerializeConfig 作为第二个参数传进去 就好了 R r = JSON.parseObject(JSON.toJSONString(result,serializeConfig), R.class);测试结果 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |