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

wap网站开发价钱wordpress 登录用户信息

wap网站开发价钱,wordpress 登录用户信息,设计师网站登录,wordpress 分类折叠在 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/812928.html

相关文章:

  • 网站开发需要什么基础温州网站设计公司哪家好
  • 东莞做个网站中国最顶尖的服装设计公司
  • 建设行政管理部门网站各大网站的网址
  • asp网站源码 生成静态北京建设网点地址查询
  • 网站的建设怎么弄wordpress设置阅读全文
  • 公司招聘网站续费申请深圳计算机速成班培训
  • 设计师每天都上的网站深圳做微信网站公司
  • 做封面模板下载网站网站提示页面设计
  • 天津建设公司网站做网站空间备案的职业
  • 手机网站建设和邹城建设银行网站
  • 手表网站 源码北京网上服务平台
  • 潍坊网站制作维护601668中国建筑官网
  • 东莞有哪些好的网站建设公司个人网站只能用作博客
  • 做自媒体用到的网站深圳网页设计科技有限公司
  • icp备案网站信息查询电脑记事本做网站
  • 广州做手机网站建设长沙征帆网站建设
  • 国内设计精美的网站建立网站需要服务器吗
  • 衡阳建设学校官方网站wordpress双栏主题开源
  • 西安网站建设g徐州seo计费管理
  • 重庆营销网站建设公司排名网站开发验证码的有效性
  • 网做网站如何入侵网站服务器
  • 自己用wordpress建站网站开发子账号
  • 石家庄建设工程信息网站网站建设分金手指排名二五
  • 中国最大免费wap网站网站如何做淘宝支付宝支付
  • 做pc端网站服务策划公司名字大全
  • 上海建站网wordpress改页脚
  • 网页与网站设计实验报告培训网站源码wordpress
  • 做网站要领织梦做的网站图片路径在哪
  • 免费推广网站怎么做广州网站优化专家
  • 大型的营销型网站上海市城市建设管理局网站