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

高中信息技术网站设计规划济南网站排名推广

高中信息技术网站设计规划,济南网站排名推广,开发手机端网站,seo报告在信息做传输时,经常会使用到类型转换,这个时候因为一些问题会导致精度的丢失。在支付业务中这种问题更为致命。 这里我主动生成一个支付订单并将相关信息使用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/a/552107.html

相关文章:

  • 手机网站开发常用工具五金技术支持东莞网站建设
  • 建设企业网站内容龙岗网站的建设
  • 南通哪些公司做网站用电脑做网站的历史在哪里找
  • 网站建设 技术 哪些内容顶易云外贸软件
  • 做网站前产品经理要了解什么德州市建设局网站
  • 网站关键词搜不到怎么给产品做网络推广
  • 视频网站的防盗链是怎么做的免费绘画素材网站
  • 网站怎么添加滤镜功能吗移动网络
  • 上传下载网站模板美容美发网站模板
  • 手机特殊网站做网站guangxiyanda
  • 网站建设调查内容有哪些宁波建设监理协会
  • 帕兰映像 wordpress整站优化
  • 珠海网站设计平台莱芜关于网站建设的公司
  • 企业网站怎么做的更好温州网站开发流程
  • 企业信息型网站有哪些网站建设的基本原则
  • php+网站开发+pdf电力建设监理招聘网站
  • 什么叫网站域名wordpress默认排序
  • 建设网站的法律可行性工业企业解决方案
  • 济宁建站公司深圳做网站专业的公司
  • 做网站建立数据库网站保持排名
  • 学校网站建设团队网站建设添加音乐的代码
  • 做外贸生意用哪个网站wordpress 数据库 插件
  • 江永网站建设wordpress怎么还原
  • 信息技术做网站厦门建设网站企业
  • 网站信息建设中国建设银行网站 纪念币预约
  • 凡科做网站不好做网站能申报只是产权么
  • 在线观看免费网站wordpress 腾讯
  • 临汾网站建设费用运城市做网站公司
  • 网站建设费用预算表通化网站建设单位
  • 中国免费最好用建站cms做一个外贸网站