浅谈 json_decode 也许这是你从未遇到过的坑

JSON是我们编码中很常用的一种编码方式

正文???

在数不清的API接口中,都用到了JSON,这也许就是它为什么这么有名的原因吧,但是写这篇博文笔者意不在讨论json的伟大,也许没有这个坑就没有这篇文章。

 

上面那个是假的 ๑乛◡乛๑

科学计数法 的诞生,饱受好评,一直沿用至今,也成为了各行各业都会用到的东西 ,不过今天的坑就是由他而生,这个坑可能比较冷门

 

温馨提醒  上面都是废话

笔者今天抓包研究某App接口的时候就掉坑里了,脸都摔歪了,请听笔者慢慢道来:

笔者接了个小项目,开开心心的准备秒掉它,可惜它很不给脸,哈哈哈

首先,抓包后接口模拟调用什么的一切顺利,可是?为啥某些数据后面都是0?

这就是问题,问题来了,接口返回json,本人熟(cai)练(ji)的使用了json_decode,很完美,稳

不过,这数据好像有点问题啊,咦?为啥有好多科学记数法?黑人问号脸??

本来以为只是显示上的问题,于是把浏览器上的各个json处理插件都关了,问题依旧

于是决定从代码入手,各种查阅,找到了方法,如下

PHP number_format() 函数

一番尝试后,脸更黑了,使用了以上函数后得到了前后不一致的数据?exm???

怒砸一小时研究依旧无果………

于是开始上网搜寻解决方案,发现普遍都是复制粘贴(内心是绝望的~),没啥参考价值

不过功夫不负有心人,在某个博客的某个小角落,同样有个和我一样掉这坑的作者

在某个不起眼的角落写了解决方案

也许像我们平时使用,json_decode($val,true);这可能是我们最常见的用法,可是有没有考虑过json中可能出现的float类型的科学记数法呢?

此处,运用了下列方法解决了这个问题,对我个人而言,又被上了一课,狠狠的被打脸,用了这么久才知道还能这样用。

没错就是那串不起眼的JSON_BIGINT_AS_STRING,简直是救星

所以很多时候还是得多学习,只有学习才能扩充自己的认知范围,而不是一味的炒冷饭,亏的永远都是自己。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注