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

北海做网站网站建设哪家好百度客户端下载

北海做网站网站建设哪家好,百度客户端下载,中国企业信息公示系统,网站建设整体策划在信息做传输时,经常会使用到类型转换,这个时候因为一些问题会导致精度的丢失。在支付业务中这种问题更为致命。 这里我主动生成一个支付订单并将相关信息使用base64编码为一个二维码返回给前端进行支付,前端进行支付时我通过回调方法发现回调…

        在信息做传输时,经常会使用到类型转换,这个时候因为一些问题会导致精度的丢失。在支付业务中这种问题更为致命。

        这里我主动生成一个支付订单并将相关信息使用base64编码为一个二维码返回给前端进行支付,前端进行支付时我通过回调方法发现回调消息显示订单不存在

经过追踪后,发现前端接收到的订单号与后端向前端发送的订单号不一致

发现产生了精度丢失,导致查询的订单不存在。

原因是订单号是Long类型,在进行base64编码时将全部的信息封装为了Json体进行传输,导致了精度的损失。

        JavaScript的Number类型基于IEEE 754双精度浮点数标准,仅能安全表示 ±2^53 - 1 范围内的整数。超过此范围的值会被四舍五入,导致精度丢失。

// JavaScript示例:超过2^53的值会被截断
console.log(1234567890123456789); // 输出:1234567890123456800

经过我的研究和查找资料,以下是两种解决方法:

1.通过注解

在字段上加上@JsonSerialize(using = ToStringSerializer.class)注解,表示在进行Json转换时,自动将其转换为字符串的形式,使前端能够取到正确的信息

/*** 本系统支付交易号*/@JsonSerialize(using = ToStringSerializer.class)private Long payNo;/*** 第三方支付交易流水号*/private String outPayNo;

2.使用配置

在可以被依赖到的配置类中,添加如下配置

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;@Configuration
public Class LToS{
//long转string避免精度损失@Beanpublic ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {ObjectMapper objectMapper = builder.createXmlMapper(false).build();//忽略value为null 时 key的输出objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);SimpleModule module = new SimpleModule();module.addSerializer(Long.class, ToStringSerializer.instance);module.addSerializer(Long.TYPE, ToStringSerializer.instance);objectMapper.registerModule(module);return objectMapper;}
}

3.手动修改

        同样可以在进行传输前手动将Long类型强转为String字符串,也能够避免前端的精度丢失

通过以上两种方法可以解决Long类型进行传输时的精度丢失问题,通过将Long类型序列化为字符串,可彻底避免前端精度丢失问题。推荐使用注解局部控制全局Jackson配置

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

相关文章:

  • 张家港网站制作企优网络游戏推广平台
  • 建设一个小网站赚钱吗兰州网站seo服务
  • 网站开发兼职团队关键词排名优化公司哪家好
  • 公司网站建设的系统功能需求今日军事新闻最新消息新闻报道
  • 简述上课网站建设所用的技术架构搜索引擎是网站吗
  • 邹城网站建设哪家便宜百度禁止seo推广
  • asp网站模板安装网络推广搜索引擎
  • 网站的建设技术有哪些内容官网整站优化
  • 国内最好的网站建设公司怎样推广自己的app
  • 安徽省建设监理协会 旧网站微信公众号推广方法有哪些
  • 商贸网站泉州百度首页优化
  • 网站建设前台功能seo的工具有哪些
  • 做阅读理解的网站外链推广是什么意思
  • 做营销网站建设价格怎么优化自己网站的关键词
  • 武汉google网站制作自己开发网站怎么盈利
  • php网站开发示例班级优化大师的优点
  • 南宁国贸网站建设石家庄seo网站管理
  • 南京和筑建设有限公司网站什么是sem
  • 用idea做html网站seo网站关键词优化工具
  • 2015年做哪个网站致富saascrm国内免费pdf
  • 个人网站 可以自己做服务器产品关键词大全
  • asp.net建立手机网站seo研究中心道一老师
  • 阿联酋网站后缀网站排名查询alexa
  • 上海做网站高端seo博客是什么意思
  • 台州网站建设找哪家好点网站关键词排名优化工具
  • 做网站大概要多少钱百度推广登录入口官网网址
  • 济南专业做企业网站seo内部优化方式包括
  • 苏州高端网站建设开发百度热搜榜在哪里看
  • php网站开发报价友情链接有哪些
  • 网站建设费用入账公关公司是干嘛的