JSONKit解析Unicode字符\u0000内容出错的总结
来源:互联网 发布:出库软件电脑 编辑:程序博客网 时间:2024/06/17 00:30
近来在搞一个名片识别的app,在测试过程中,经常出现返回结果为空的错误。一直以为是识别不到名片的问题,纠缠了几天,突然在一天晚上注意到原来识别是没问题,问题是出现在json内容分析上。一下茅塞顿开了。痛恨醒悟得太晚了。
如下面识别到的名片内容:
{"code":"0","result":"123adikd","name":["詹建忠"],"title":["\u0000"],"mobile":["13751234632"],"tel":["4008840063","29800399","02029809322"],"degree":[],"dept":[],"comp":["广州东湖汽车"],"addr":["口:转乘经停大冲口的公空车,下车后过马路即到)","广州市荔湾区芳村大道东166号t地铁1号线A1出"],"post":[],"mbox":[],"htel":[],"fax":["02081565638"],"email":[],"web":["gzpeugeot.com"],"im":[],"numOther":[],"other":[],"extTel":[]}因为之前一直是使用JSONKit来解析json数据,鉴于它的简单高效,从一开始接触就爱上了它,并且长期的占用着,一刻也不离开。
以上数据解析出来结果为空(nil)。因为代码判断到结果为空,则提示识别错误,所以在测试过程中,有几张名片一直提示识别错误,但有另外一些名片却能识别到,所以出现了连续几天无比抓狂的痛苦。这下好了,原来症结是在json解析上。简单分析了一下json数据,觉得应该是title节点的问题,即:"title":["\u0000"]。另外写了行代码直接使用JSONKit解析这段内容,去掉引号内的\u0000后,重新运行,解析正确,内容不再为nil。狂喜了一秒后陷入了深思之中,\u0000是(char)0的Unicode编码,理论上应该是空才对,为啥JSONKit碰到这个会解析不到呢?
google之,在github上作者解释了这个问题,说这个是内容提供的错误,不符合标准的内容,所以他不认为这个是自己的错误,这个是内容提供者的问题。
作者的原话如下:
In this particular case, these services are very clearly "in the wrong". RFC 4627 is unambiguous that characters < 0x20
are verboten. In cases like there, where something is clearly violating the standard, my default response is that "It's the other persons (web service) problem." The standard is the standard, and it is Right(tm), even its mistakes.
详见这里:https://github.com/johnezang/JSONKit/pull/26
继续搜索,找了一篇解决办法的文章,是通过修改JSONKit代码来避开这个错误,但替换代码试了,发现不行。
文字如下:http://ixhan.com/2012/04/jsonkit-illegal-unicode-escape-sequenc/
本想试试用SBJson来解析是否能成功,但无奈网络巨慢,下载不到framework。就改成用Xcode自带的NSJSONSerialization试了下,可以解析成功的。解析出来的内容是"title": [""],也就是空字符。
试了一些在线的json解析器,上面这段json内容,解析器都可以解析成功。看来很多情况下标准和现实还是有点差距,偶尔也要为了迁就现实而要去妥协,先将标准摆一边去了,不然吃苦头的只有是自己了。看来这个道理在比较纯洁的代码世界也不能避免啊。O(∩_∩)O哈哈~
- JSONKit解析Unicode字符\u0000内容出错的总结
- JSONKit无法解析Unicode字符\u0000
- java中'/u0000'字符的显示问题
- 不能被复制的字符:'/u0000'
- java 中手写可识别的 unicode 编码 ( "\u0000\u1111" )
- JSON 数据的 JSONKit 解析
- JSONKit解析
- java中char类型的默认值是 '\u0000' 吗?是空字符还是空格?
- 由”\u0000”产生的联想
- jsonkit 解析本地数据
- JSon解析之JSonKit
- iOS开发 JSONKit解析
- JSONKit网络解析
- Unicode和字符编码总结
- windows控制台程序——关于UNICODE字符的总结
- c++字符编码的总结(ANSI、Unicode、UTF、UCS)
- JSONKit 解析逗号冗余的json字符串失败
- JSONKit总结笔记
- test
- 分类器是如何做检测的
- linux单机环境下利用openmpi实现矩阵乘的并行计算
- Android 中tomcat搭建本地服务器
- ORA-600 -3005和ORA-600-2662/2663
- JSONKit解析Unicode字符\u0000内容出错的总结
- [HLS]HTTP Live Streaming流与TS流比较
- iPhone实战:定位与地图
- login shell和non-login shell环境配置
- 网站上嵌入新浪的微博
- android中的Style与Theme
- 利用引用类型作参数将三个数由大到小的顺序排列
- vc6.0 异步输出cmd打印
- 关于C#中父子窗体间交互问题