網絡數據解析框架
1.? JsonModel
一個 JSON 模型轉換庫,有著比較簡潔的接口。Model 需要繼承自 JSONModel。
2.? yyModel
yyModel比較輕量(算上.h 只有 5 個文件),支持自動的 JSON/Model 轉換,支持定義映射過程。API 簡潔,功能也比較簡單。據說作者是用兩個周末寫出來的,需要謹慎使用。
3.? MJExtension
國內開發(fā)者"小碼哥"開發(fā)的JSON 模型庫,號稱性能超過 JSONModel 和Mantle,使用簡單無侵入。國內有大量使用者。
4.? Mantle? ? ? 唱吧
Github 官方團隊開發(fā)的JSON 模型轉換庫,Model 需要繼承自MTLModel。功能豐富,文檔完善,使用廣泛。
類型轉換太捉急 解析層次比較深的模型邏輯較為復雜
key mapper的邏輯真是要吐血
5.? JsonKit
6.? TouchJson? ? 13年之前比較流行
7.? SBJson? 不建議使用
8.? 原生Json 解析方法 NSJSONSerialization 速度比較快需要我們手動的去建立模型解析比較費時間??梢赃M行高效、自由的進行裝換,但是繁瑣,容易出現錯誤。
2013年數據統(tǒng)計結果
9.? FastEasyMapping
Yalantis 開發(fā)的一個JSON 模型轉換庫,可以自定義詳細的 Model 映射過程,支持CoreData。使用者較少。
SBJSON在多數測試中都處于倒數的第一或倒數第二的位置。所以說,SBJSON實際上在性能這一點上講,確實是非?!癝B”的,實在不值得大家留念。趕快把你的JSON解析庫換成其它的吧!
JSONKit本身做了很多內存上的優(yōu)化,所以不支持ARC,你在使用時可以對其加上 -fno-objc-arc 的編譯標志即可
數據對比:github 最新數據
2016年最新統(tǒng)計結果
用例2:WeiboStatus
從官方微博 App 抓取一條內容完整的微博數據,JSON總共有 580 行(是的,一條微博需要這么大數據量),包含大量嵌套對象、容器對象、類型轉換、日期解析等。這個用例主要是測試在復雜的情況下不同庫的性能。
每次測試執(zhí)行 1000 次,統(tǒng)計耗時毫秒數。
測試結果如下:
Mantle在各個測試中,性能都是最差的
JSONModel和 MJExtension 性能相差不多,但都比 Mantle 性能高。
FastEasyMapping相對來說性能確實比較快。
YYModel性能高出其他幾個庫一個數量級,接近手寫代碼的效率。
FastEasyMapping不支持 NSCoding 協(xié)議,所以不能進行 Archive 的性能測試。
MJExtension在處理復雜對象轉為 JSON 時,存在錯誤。
容錯性:
容錯性主要是測試在默認情況下,當 JSON格式錯誤時,Model框架是否會產生錯誤結果或造成 Crash。
MJExtension詳解:http://www.itdecent.cn/p/93c242452b9b