0、背景 在项目开发的过程中,我们很多时候会使用雪花算法生产主键,这种方式尤其使用现在比较流行的分布式项目中; 在前后台分离的情况下,这个Long类型的数据,直接响应给前端,数据精度会缺失,所以解决的方案,就是将其转换为String类型,则问题解决!,有如下三种方案可供选用 1、第一种,针对单个响应类的单个字段,值需要再字段的上加一个注解即可
/**
* AccessKeyId
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long accessKeyId;
2、统一的方式,在配置文件中配置,将项目中响应类的所有lang类型字段都会转换成String类型
spring:
http:
encoding:
charset: UTF-8
force: true
enabled: true
resources:
add-mappings: true
application:
name: openssp
jackson:
date-format: yyyy-MM-dd HH:mm:ss #这个是项目所有时间,统一响应格式化的
generator:
write-bigdecimal-as-plain: true #格式化为 String类型,来响应
write-numbers-as-strings: true #格式化为 String类型,来响应
3、第三种方式,需要编码实现
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* @Author: ghw
* @Date: 2021/4/27 9:41 PM
*/
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
/**
* 字符串格式的时间转换
*/
SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.setDateFormat(smt);
// #格式化为 String类型,来响应
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
}
最后修改于 2022-04-15 11:12:36
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

