Spring boot 在使用fastjson 转换时 LocalDateTime 时间数据类型会带T 处理方案

您所在的位置:网站首页 项目控制英文 Spring boot 在使用fastjson 转换时 LocalDateTime 时间数据类型会带T 处理方案

Spring boot 在使用fastjson 转换时 LocalDateTime 时间数据类型会带T 处理方案

2024-01-25 07:39| 来源: 网络整理| 查看: 265

在项目开发中 有的个别接口 返回给前端的数据中 日期时间格式 的数据 中间会带 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