iOS数据解析框架搭建

在iOS开发中,数据解析转化方面有许多比较好用的框架,如MjExtension,自己以前写过一个数据解析框架,今天就简单的总结一下。

数据解析,无非就是数据的转化,我这个框架主要用处就是将从网络请求来的数据转化为模型类的对象格式,还是就是将代码中的模型对象转化为json数据,这个常用于发送post请求。

项目的代码将会托管到github上,需要的可以去下载。也可以留言提意见。

下载完项目后,打开,框架就在JsonAgent文件夹,主要分为两个大类SYYJSonToObjectBuilderSYYJSonPersistBuilder,对应的用途如名字。

一.json数据解析为对象

框架实现的原理就是kvo转化。实现步骤如下

  1. CREATE_JSON_TO_OBJECT_BUILDER(builder) 创建构造器

  2. SET_BUILDER_CONTAINER(builder, className) 为构造器设置键值

  3. SET_BUILDER_RESOURCE(builder, resource) 为构造器设置资源

  4. ADD_BUILDER_RESOURCE_PROCESSOR(builder, class, key) 填写对应键值在资源中的key

  5. GET_RESULT(builder) 输出对象

容器类遵循SYYJSonAbstractBuilderInterface.h协议,协议里有增加,删除属性的方法,可以对类属性做处理,demo里并没有做类似的封装,感兴趣的同学可以自己实现。为构造器设置键值,就是针对数据的最外层键值进行指定,然后对构造器指定资源,资源一般的字典数据类型,然后指定资源中键值,如测试数据中的programmersauthorsmusicians,最后是就是解析,解析过程就是通过一层层进行遍历,通过kvo赋值,如果是数组类型或者字典类型,会进一步做遍历,直至遍历到我们指定类,即我们要最终转化的类型,从而得到最终的模型对象。

如下图所示:是解析出的结果,可以看到,传入的json数据已经转化为我们demo里定义的类型

二. 类对象转化为json数据

步骤如下:先创建解析器, SYYJSonAbstractBuilder 是遵循SYYJSonAbstractBuilderInterface协议的,声明资源类型,将对象传入声明资源中,将资源放入转化器中,最后进行转化。步骤很简单,就不多解释了。

SYYJSonAbstractBuilder* decode_builder = [[SYYJSonPersistBuilder alloc]init];

SYYJSONBUILDER_VAR_TYPE decode_resource;

decode_resource.instance_ = self.object;

[decode_builder setBuilderResource:decode_resource];

NSString* jsonString = [decode_builder getResult];
复制代码

最终效果如下所示:

github链接

转载于:https://juejin.im/post/5a3d1ed96fb9a0451239255f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值