MJExtension

1,235 阅读2分钟
原文链接: www.jianshu.com

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

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

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

功能介绍

  • JSON转Model

  • Model转JSON

  • 黑名单

  • 白名单

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

  • 新值替换旧值

    等等在内的功能

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

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

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

其过程处理如下

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

重点

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

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

对比

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

感谢

最后感谢MJExtension作者

MJEXtension