Js中JSON.parse函数解析导致的数据异常

Js中JSON.parse函数解析导致的数据异常

今天在项目中遇到一个问题,通过扫一扫功能将扫描的条形码返回给前端,前端同学返回返回的条形码不正确,后边两位和源数据对不上,只有Android有这个问题,只有Android有这个问题,那就只能Android这边去排查了,经过一番排查发现,到最终Android返回给前端的的数据是么有问题的,那么为什么到前端就出错了呢?前端同学的调用方式也没问题?到底是哪里出错了,经过一番log发现数据经过JSON.parse()函数后数据就发生变化了,自己写了个例子看西边代码


var num="123456789987654333";

var parse=JSON.parse(num);

123456789987654340

确实是和原数据对不上了,经过一番查找资料和测试发现是数据超过16位之后就会出错,JSON.parse() 方法用来解析JSON字符串,之前也解析过其他json字符串,也没出现这种问题比如

var obj= '{"result":true, "count":42}';

var res=JSON.parse(obj)

res
{result: true, count: 42}

这也没问题,那为什么上边的就有问题了呢?经过一番资料查询,才知道可能是和json字符串内容有关系,可能解析的时候认为var num="123456789987654333"; 里边是num类型,结果又由于长度比较长所有就出错了,有什么依据说明是num类型看下边测试:

var num="123456789987654333";

var res=JSON.parse(num)

typeof res
"number"

输出log显示解析完后确实是num类型的,那么这个怎么解决呢,就是让JSON.parse() 函数解析的时候不认为里边是num类型就行了吧,那咋做呢看下边测试:

var num=" \"123456789987654333 \" ";

var res=JSON.parse(num)

typeof res
"string"

res
"123456789987654333 "

根据以上资料查询和测试,应用到项目中果真问题就解决

你可能感兴趣的:(前段框架Jquery)