当前位置: 首页 > wzjs >正文

前端开发培训课程淄博seo推广

前端开发培训课程,淄博seo推广,英文营销网站建设,扬州企业网站建设在 Java 后端开发中,可能会遇到前后端交互过程中 Long 类型精度丢失的问题。尤其是在 JavaScript 中,由于其 Number 类型是双精度浮点数,超过 16 位的 Long 类型值就会发生精度丢失。 问题背景 假设有如下实体类: public class…

在 Java 后端开发中,可能会遇到前后端交互过程中 Long 类型精度丢失的问题。尤其是在 JavaScript 中,由于其 Number 类型是双精度浮点数,超过 16 位的 Long 类型值就会发生精度丢失。

问题背景

假设有如下实体类:

public class TemplateValue implements Serializable {private Long colHeadId;private Long rowHeadId;private String val1;private String val2;
}

这在后端没有问题,但如果前端直接接收这个数据,colHeadId rowHeadId 可能会在 JS 中出现精度问题,比如:

{"colHeadId": 1234567890123456789
}
1234567890123456770  // 精度丢失!

解决方案:Long 类型转 String 传给前端

为了解决这个问题,我们需要在序列化时将 Long 类型转成 String,即使用:

@JsonSerialize(using = ToStringSerializer.class)

同时,前端传来的 String 要转回 Long 怎么办?

这就是本文的重点!序列化做了,反序列化没做,就会出现类型转换失败或数据无法接收的问题。

那么我们需要自定义一个反序列化器,将前端传来的 String 自动转成 Long 类型。

实现步骤

1.创建自定义反序列化器 ToLongDeserializer

可以放在工具类里

package com.yourproject.util;import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;public class ToLongDeserializer extends JsonDeserializer<Long> {@Overridepublic Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {String value = p.getText();try {return value != null ? Long.parseLong(value) : null;} catch (NumberFormatException e) {throw new IOException("Invalid long value: " + value, e);}}
}
2. 在实体类上使用序列化 & 反序列化注解
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yourproject.util.ToLongDeserializer;public class TemplateValue implements Serializable {@JsonSerialize(using = ToStringSerializer.class)@JsonDeserialize(using = ToLongDeserializer.class)private Long colHeadId;@JsonSerialize(using = ToStringSerializer.class)@JsonDeserialize(using = ToLongDeserializer.class)private Long rowHeadId;private String val1;private String val2;
}

这样,在前后端交互时就能做到:

  • 后端返回数据时将 Long -> String,避免精度丢失;

  • 后端接收前端数据时将 String -> Long,方便业务逻辑处理。

总结

前后端交互中,涉及 Long 类型字段时:

  • 必须序列化为 String,@JsonSerialize(using = ToStringSerializer.class),避免前端精度丢失

  • 如果需要将数据回传给后端,必须反序列化为 Long,创建自定义反序列化器,确保后端能正常接收

http://www.dtcms.com/wzjs/386869.html

相关文章:

  • 如何选择武汉网站建设新闻头条最新消息今天
  • 中国建设银行官网个人网上银行八宿县网站seo优化排名
  • 户外商品网站制作网站网络推广企业
  • 开发一个安卓app多少钱关键词优化公司网站
  • 用html5做的网站素材seo优化网络公司排名
  • 模型网站大全免费生意参谋指数在线转换
  • 敦化网站建设舆情监测软件免费版
  • 织梦cms做网站教程视频新媒体营销案例分析
  • 做网站开通手机验证功能百度应用商店下载
  • 杭州做网站seo亚马逊站外推广网站
  • wordpress 做大型网站吗微信营销案例
  • 如何在linux下安装wordpressseo 工具
  • 互联网营销师怎么做刷移动端seo软件
  • 怎样使用自己的电脑做网站网页优化包括
  • 青岛开发区网站建设服务百家号优化
  • wordpress 页面导出针对百度关键词策划和seo的优化
  • 不记得域名管理网站网络推广外包怎么样
  • 凡科网站怎么做授权查询搜狗搜索排名优化
  • 域名与网站名称的关系查指数
  • 做刷题网站赚钱么网站友情链接怎么弄
  • 电影网站制作毕业论文摘要2024年3月新冠高峰
  • 网站建设图文seo外包收费
  • 顺德哪家做网站怎么创建网站赚钱
  • 网站设计代做网页广告怎么做
  • 沧州网站制作网站站外推广怎么做
  • 慈溪企业排名网站网站设计与开发
  • 专做五金正品的网站商旅平台app下载
  • 专业群建设方案张家界百度seo
  • 政府网站建设的脚注全球搜索引擎排名2022
  • 网上书店网站建设设计的收获营销工具有哪些