Vue解决后端返回Long类型丢失精度问题

最近帮人搞个项目,由于没怎么对接,后端就直接返回long类型的id,这搞得前端比较被动,后端如果处理long类型,会影响其他功能,索性前端想办法解决吧,正所谓:没有解决不了的问题只是看你想不想解决

干货

经过一番分析和搜查之后,找到了Jison这个开源项目,按照Github文档介绍下载项目

npm install jison -g		

然后下载jsonlint项目,修改src下的jsonlint.y文件
在这里插入图片描述
将原文本的

JSONNumber
    : NUMBER
        {$$ = Number(yytext);}
    ;

替换成

JSONNumber
    : NUMBER
        {$$ = yytext == String(Number(yytext))? Number(yytext): yytext;}
    ;

最后利用jison生成jsonlint.js文件

cd 路径/jison/src
jison jsonlint.y jsonlint.l

引入vue项目

  1. 将生成的jsonlint.js引入到vue工程下的public/static目录下
    在这里插入图片描述
  2. 在index.html中引入,根据自己的存放路径引入即可
    在这里插入图片描述
  3. 在请求响应的时候做一层拦截
    在这里插入图片描述
    这样前端就能取得long类型id而不丢失精度,但是需要注意的是,需要将id进行console.log打印出来,在network中查看,还是丢失精度的
Logo

Vue社区为您提供最前沿的新闻资讯和知识内容

更多推荐