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 "

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

更多相关文章

  1. android 解码出来的视频frame数据,是如何一步步的传递到显示端的(
  2. 金三银四背后,一个 Android(安卓)程序员从被裁到拿到 Offer 的面
  3. 跟我学Android应用开发 之 Android中资源文件的使用
  4. Android使用WCF的服务程序之入门
  5. Android(安卓)数据库文件 db 的备份和重载
  6. Android全局主题样式控制,语言设置、主题颜色、字体大小、字体样
  7. Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像
  8. Android(安卓)必须知道2018年流行的框架库及开发语言
  9. 处理Android应用在后台被杀死

随机推荐

  1. Android之Activity生命周期浅析(一)
  2. Android(安卓)7.0 7.1 8.0 应用获取各个
  3. Axis2与Android的Json(Gson)通信传数据
  4. Android学习——基础组件
  5. MoviGuard android客户端准备发布
  6. Android context源码详解及深入分析
  7. Android学习系列(40)--Android主题和样式
  8. Android 带有弹出收缩动画的扇形菜单实例
  9. android为模拟器安装应用
  10. android——wifi系统架构