网络数据解析框架
1. JsonModel
一个 JSON 模型转换库,有着比较简洁的接口。Model 需要继承自 JSONModel。
2. yyModel
yyModel比较轻量(算上.h 只有 5 个文件),支持自动的 JSON/Model 转换,支持定义映射过程。API 简洁,功能也比较简单。据说作者是用两个周末写出来的,需要谨慎使用。
3. MJExtension
国内开发者"小码哥"开发的JSON 模型库,号称性能超过 JSONModel 和Mantle,使用简单无侵入。国内有大量使用者。
4. Mantle 唱吧
Github 官方团队开发的JSON 模型转换库,Model 需要继承自MTLModel。功能丰富,文档完善,使用广泛。
类型转换太捉急 解析层次比较深的模型逻辑较为复杂
key mapper的逻辑真是要吐血
5. JsonKit
6. TouchJson 13年之前比较流行
7. SBJson 不建议使用
8. 原生Json 解析方法 NSJSONSerialization 速度比较快需要我们手动的去建立模型解析比较费时间。可以进行高效、自由的进行装换,但是繁琐,容易出现错误。
2013年数据统计结果
9. FastEasyMapping
Yalantis 开发的一个JSON 模型转换库,可以自定义详细的 Model 映射过程,支持CoreData。使用者较少。
SBJSON在多数中都处于倒数的第一或倒数第二的位置。所以说,SBJSON实际上在性能这一点上讲,确实是非常“SB”的,实在不值得大家留念。赶快把你的JSON解析库换成其它的吧!
JSONKit本身做了很多内存上的优化,所以不支持ARC,你在使用时可以对其加上 -fno-objc-arc 的编译标志即可
数据对比:github 最新数据
2016年最新统计结果
用例2:WeiboStatus
从官方微博 App 抓取一条内容完整的微博数据,JSON总共有 580 行(是的,一条微博需要这么量),包含大量嵌套对象、容器对象、类型转换、日期解析等。这个用例主要是测试在复杂的情况下不同库的性能。
每次测试执行 1000 次,统计耗时毫秒数。
测试结果如下:
Mantle在各个测试中,性能都是最差的
JSONModel和 MJExtension 性能相差不多,但都比 Mantle 性能高。
FastEasyMapping相对来说性能确实比较快。
YYModel性能高出其他几个库一个数量级,接近手写代码的效率。
FastEasyMapping不支持 NSCoding 协议,所以不能进行 Archive 的性能测试。
MJExtension在处理复杂对象转为 JSON 时,存在错误。
容错性:
容错性主要是测试在默认情况下,当 JSON格式错误时,Model框架是否会产生错误结果或造成 Crash。
MJExtension详解:http://www.jianshu.com/p/93c242452b9b