从事开发时间不短了,但绝对算不上是什么“技术大牛”。
在工作中去沉淀自己,是我最快乐的事情,每当搞懂一个问题的原因,并把这个问题的解决方法记录下来,这就是成长的过程。
闲话少说,切入正题:
在之前的开发过程中,请求数据都是很简单方便的,但是这两天我在开发过程中遇到了一个让我很蛋疼的问题:请求数据能成功,也能拿到二进制数据,在使用NSJSONSerialization这个类转换的时候,在控制台却输出转换不成功,打印Log为:Error Domain=NSCocoaErrorDomain Code=3840 "No string key for value in object around character 825." UserInfo={NSDebugDescription=No string key for value in object around character 825.}
这里的大概意思就是没有对应的键,想到的就是返回的数据格式有问题,后来稍微问了一下同事,他的回答是:“没问题,安卓就可以正常使用”,好吧我不懂安卓,没有发言权,他说什么就是什么喽!(你们说我脾气是不是挺好...haha)
我又看了看自己的代码,确定代码没问题。那就再看是不是我的解析方式有问题,换了好多种解析方式,结果无疑还是不行,这里蛋疼的调试了一下午了已经,身心疲惫啊~~
第二天休息,没事做,但是这个事情一直都有影响我,我就搬出来电脑,继续找原因,也不是太专心的找,白天事情多,重点来了:晚上没事做,心也比较静,就接着看,我想着该试的方法我都有试过,结果一直就是解决不了问题,我就把数据抠出来,一点一点的看,我类个擦,这一看,我还真的发现了些许问题,正常的数据格式是{"userInfo":{"userName":"程序猿","sex":"男"}},
结果呢:我发现后台返回的数据格式是{"userInfo":{userName:"程序猿","sex":"男"}}这样的,朋友们这两个是有区别的,而且是很大的区别,只不过有点不易发现而已
键userName 正常的应该是带有双引号的"userName"。错误的是userName 直接这样,我在这里想吐槽一下后台,你少两个符号能省多少时间啊,我可是为了这两个引号折腾了好久,坑了又坑。。。。
到了这里已经接近尾声了;
我在数据了加上了引号之后在测试,尼玛。竟然好了... 就是这么简单
这时候再返回去,从二进制转换为dictionar,没有一点犹豫的就成功了。
好吧,这件小闹剧就这样收场了
下面是把数据抠出来自定义为字符串的对代码格式
不错,这里是要加\的,不加的话是不行的,因为会跟NSString的定义格式@""产生冲突,不信邪的小伙伴可以尝试一下,自己操作过,才会记得更深刻。。
如有错误的地方,请联系本人,不吝赐教 806958063@qq.com
在开发的过程中,都会遇见自己没见过的Log输出(这里是不包括做了N久的程序大牛的),记录下来自己的开发过程,这是我第一次在《简书》写这样的不算文章的小片段,谨以此作为自己的开发日记,下次再碰到同样的问题,我相信都不是问题了!!!
在生活中,每个人都有属于自己的烦恼,小BUG,不要慌张,总会有解决的办法的。对生活充满激情
生活不止眼前的苟且,还有诗和远方----
各位晚安!
Good evening!
I Love You Code Man!