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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇