MJExtension

在开发中网络请求数据格式JSON格式的数据,我们常做的做法是转换成Model对象,然后装进数组来进行其他的业务处理

这篇文章就详解一下JSON转Model的第三方框架本次介绍的框架是MJExtension

MJExtension###

MJExtension 是我一直以来使用的轻量级 性能 很好处理的时间比较短 API使用的也比较方便 在这里感谢作者 李明杰先生

功能介绍###

  • JSON转Model

  • Model转JSON

  • 黑名单

  • 白名单

  • 替换属性name 和多级替换取值

  • 新值替换旧值

    等等在内的功能

相信大家以前也都看过很多类似写json转model的一些文章实现大概功能的思路

  1. 使用runtime 来遍历Model 的所有属性
  2. 处理遍历出来属性的名字类型
  3. 去字典中取对应属性名字的key 作为value 然后给model赋值

我认为大概就这个三个步骤,但是仅仅是这么简单了吗? 不是的!!!

其过程处理如下

  1. 类型安全 ?
  2. 如何缓存 ?

类型安全大家可以看下MJExtension 使用KVC最后给属性赋值的 不是KVC赋值的属性不可以转换,支持基本类型字符串直接的转换 不同类型的对象不给予赋值 在赋值的过程中MJExteson 给出了接口可以自定义转换就是上面的功能新值替换旧值

重点###

其实重点想说的就是缓存如何缓存 可以在代码当中看出MJExtension使用了几个字典来缓存的各自有各自缓存的目的

缓存属性 缓存有替换的属性 缓存黑名单 缓存白名单 缓存取值的Key 就是Model的类型 缓存的目的就是为了减少取相同值的时间,因为每一个类每一个Model 的属性 在我们写代码的时候都是约定好的,不用每次都使用runtime取需要的值,然后结合自己框架的功能去处理值。只要处理过的我们就给缓存起来就OK了,下次取值的时候会更快,效率更高!!! MJExtension的做法是每次去不同的缓存里面取对应的值!!!这样提高了代码的运行效率!!当然一个框架出了缓存还有你的代码质量

对比###

github上面还有其他的类似的框架不过使用我个人觉得他们的API都没用MJExtension使用方便,有的还需要继承一个父类,没有MJExtension写一个类扩展方便 而且处理的效率也很慢MJExtension比他们处理的时间经过我自己的测试要快很多!!!

感谢###

最后感谢MJExtension作者

MJEXtension

推荐阅读更多精彩内容