在开发中网络请求数据格式JSON
格式的数据,我们常做的做法是转换成Model
对象,然后装进数组来进行其他的业务处理
这篇文章就详解一下JSON转Model的第三方框架
本次介绍的框架是MJExtension
MJExtension###
MJExtension
是我一直以来使用的轻量级 性能
很好处理的时间比较短
API
使用的也比较方便 在这里感谢作者 李明杰
先生
功能介绍###
JSON转Model
Model转JSON
黑名单
白名单
替换属性name 和多级替换取值
-
新值替换旧值
等等在内的功能
相信大家以前也都看过很多类似写json转model的一些文章实现大概功能的思路
- 使用
runtime
来遍历Model
的所有属性 - 处理遍历出来属性的名字类型
- 去字典中取对应属性名字的key 作为value 然后给model赋值
我认为大概就这个三个步骤,但是仅仅是这么简单了吗? 不是的!!!
其过程处理如下
- 类型安全 ?
- 如何缓存 ?
类型安全大家可以看下MJExtension 使用KVC最后给属性赋值的 不是KVC赋值的属性不可以转换,支持基本类型
和字符串
直接的转换 不同类型的对象不给予赋值 在赋值的过程中MJExteson
给出了接口可以自定义转换就是上面的功能新值替换旧值
重点###
其实重点想说的就是缓存
如何缓存 可以在代码当中看出MJExtension使用了几个字典来缓存的各自有各自缓存的目的
缓存属性
缓存有替换的属性
缓存黑名单
缓存白名单
缓存取值的Key 就是Model的类型 缓存的目的就是为了减少取相同值的时间,因为每一个类每一个Model 的属性 在我们写代码的时候都是约定好的,不用每次都使用runtime取需要的值,然后结合自己框架的功能去处理值。只要处理过的我们就给缓存起来就OK了,下次取值的时候会更快,效率更高!!! MJExtension
的做法是每次去不同的缓存里面取对应的值!!!这样提高了代码的运行效率!!当然一个框架出了缓存还有你的代码质量
对比###
github
上面还有其他的类似的框架不过使用我个人觉得他们的API都没用MJExtension
使用方便,有的还需要继承一个父类,没有MJExtension写一个类扩展方便 而且处理的效率也很慢MJExtension
比他们处理的时间经过我自己的测试
要快很多!!!
感谢###
最后感谢MJExtension作者