Js中JSON.parse函数解析导致的数据异常
16lz
2021-01-24
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 "
根据以上资料查询和测试,应用到项目中果真问题就解决
更多相关文章
- android 解码出来的视频frame数据,是如何一步步的传递到显示端的(
- 金三银四背后,一个 Android(安卓)程序员从被裁到拿到 Offer 的面
- 跟我学Android应用开发 之 Android中资源文件的使用
- Android使用WCF的服务程序之入门
- Android(安卓)数据库文件 db 的备份和重载
- Android全局主题样式控制,语言设置、主题颜色、字体大小、字体样
- Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像
- Android(安卓)必须知道2018年流行的框架库及开发语言
- 处理Android应用在后台被杀死