加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

不要使用SBJSON(json-framework)

发布时间:2020-12-16 19:56:07 所属栏目:百科 来源:网络整理
导读:不知道为什么,在iOS开发中,有很多人使用SBJSON(又被称作json-framework)来做JSON解析库。我想这是因为SBJSON是最早在iOS上出现的JSON解析库。但是随着iOS开发的流行,越来越多优秀的JSON解析库也涌现出来,SBJSON和它们相比,性能上有很大的差距。 现在iOS

不知道为什么,在iOS开发中,有很多人使用SBJSON(又被称作json-framework)来做JSON解析库。我想这是因为SBJSON是最早在iOS上出现的JSON解析库。但是随着iOS开发的流行,越来越多优秀的JSON解析库也涌现出来,SBJSON和它们相比,性能上有很大的差距。

现在iOS行业内主要流行的JSON解析库有:NSJSONSerialization、Apple JSON、TouchJSON、SBJSON、YAJL、JSONKit

行业内许多同行都对这些库进行过benchmark测试。我在网上搜到的测试文章包括:

  • https://github.com/samsoffes/json-benchmarks
  • http://www.52php.cn/article/p-pcmuoxxc-rq.html
  • http://www.52php.cn/article/p-wqhqcudh-gd.html
  • http://omegadelta.net/2011/11/04/json-framework-now-sbjson-is-evil/
  • http://stackoverflow.com/questions/2256625/comparison-of-json-parser-for-objective-c-json-framework-yajl-touchjson-etc

下图是我从ArthurChenJS的博客文章中截取的一张benchmark测试结果图(横条越短,解析速度越快):

从这些文章中可以看到,SBJSON在多数测试中都处于倒数的第一或倒数第二的位置。所以说,SBJSON实际上在性能这一点上讲,确实是非常“SB”的,实在不值得大家留念。赶快把你的JSON解析库换成其它的吧!

那么应该换成哪个呢? 如果你的app只支持iOS 5.0以上系统,那么直接用苹果官方提供的JSON库:NSJSONSerialization库即可。 如果你的app要支持iOS 5.0以下的系统,那么我个人推荐JSONKit,不过JSONKit本身做了很多内存上的优化,所以不支持ARC,你在使用时可以对其加上 -fno-objc-arc 的编译标志即可,设置这个编译标志的详细步骤可以见这篇文章。

JSONKit的使用也非常方便,在使用上只需要把SBJSON的JSONValue方法换成objectFromJSONData,JSONRepresentation方法换成JSONString即可。附上一段使用示例:

1
2
3
4
5
6
#import "JSONKit.h"  NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"]; NSData *content = [NSData dataWithContentsOfFile:path]; NSDictionary *kitData = [content objectFromJSONData]; kitString = [kitData JSONString]; 

祝大家玩得开心。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读