不要使用SBJSON(json-framework)

來源:互聯網
上載者:User

標籤:

不要使用SBJSON(json-framework)

文章目錄

不知道為什麼,在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://blog.csdn.net/arthurchenjs/article/details/7009995
  • http://blog.csdn.net/ccat/article/details/7207871
  • 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即可。附上一段使用樣本:

#import "JSONKit.h"

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
NSData *content = [NSData dataWithContentsOfFile:path];
NSDictionary *kitData = [content objectFromJSONData];
NSString *kitString = [kitData JSONString];

祝大家玩得開心。

不要使用SBJSON(json-framework)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.