long类型精度丢失问题的三种解决方案 (在Long长度大于17位时会出现精度丢失的问题)
Posted on 2024-06-06 15:46 且行且思 阅读(869) 评论(0) 编辑 收藏 举报1. 简介
对于Long类型的数据,如果我们在Controller层将结果序列化为json,直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题
2. 解决方案
2.1 注解
2.1.1 @JsonFormat
@JsonFormat(shape =JsonFormat.Shape.STRING)
2.1.2 @JsonSerialize
@JsonSerialize(using = ToStringSerializer.class)
2.1.3 详情
package com.king.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; /** * @author King * @version 1.0 * @description TODO * @date 2023/9/5 10:19 */ @Data @EqualsAndHashCode(callSuper = false) public class user implements Serializable { //方式一 @JsonFormat(shape = JsonFormat.Shape.STRING) private Long id; private String username; private String password; //方式二 @JsonSerialize(using = ToStringSerializer.class) private String userId; }
2.2 ObjectMapper
在spring boot的启动类或者spring的配置类里面添加bean
/** * @description Long类型精度类型丢失 * @param mapperBuilder * @return com.fasterxml.jackson.databind.ObjectMapper * @author King * @date 2023/9/5 10:33 */ @Bean public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder mapperBuilder) { ObjectMapper build = mapperBuilder.createXmlMapper(false).build(); build.setSerializationInclusion(JsonInclude.Include.NON_NULL); SimpleModule module = new SimpleModule(); module.addSerializer(Long.class, ToStringSerializer.instance); module.addSerializer(Long.TYPE, ToStringSerializer.instance); build.registerModule(module); return build; }
分类:
JAVA
, IntelliJ IDEA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-06-06 Postgresql,MySQL, SQL Server 的多表连接(join)update 操作
2019-06-06 EF优化之启动预热
2019-06-06 AutoDetectChangesEnabled及AddRange解决EF插入的性能问题
2009-06-06 Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
2007-06-06 WinRAR 命令行备份SQLserver数据库文件 或者Vss源代码数据库目录······
2007-06-06 如何每天自动备份 SourceSafe !