Long返回前端精度丢失问题解决

533 阅读1分钟

主键

分布式,一些主键生成的是雪花算法19位,如果返回到前端Long类型存在精度丢失问题 有时候我们数据库表的主键会设置为Long类型,这时候如果使用雪花算法或者其他手段,在插入数据库时数值是20位的数,这时候返回给前端就会造成精度丢失,以下是用注解方式解决该问题。

FastJson序列机制下的项目

@JSONField(serializeUsing = ToStringSerializer.class)
private Long id;

Jackson序列机制下的项目

@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;

springboot的内置的默认的序列化方式是jackson

在@SpringBootApplication类中添加

    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        //创建FastJson信息转换对象
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        //创建FastJson对象并设定序列化规则
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        fastJsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
        //规则赋予转换对象
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        return new HttpMessageConverters(fastJsonHttpMessageConverter, new StringHttpMessageConverter(Charset.forName("UTF-8")));
    }