iOS开发中JsonModel使用方法 详解

本人最近在开发一款天气应用的时候遇到了一个问题,就是当获取json数据后,这是一个结构很复杂的字典,当我们需要将数据逐步解析时会发现由于结构过于繁琐,在分解成所需要的model类型时工作量非常的大,于是从网上查阅相关资料,发现JsonModel这个第三方库可以自动将字典类型的数据解析为model类型。于是在各种网站上寻找demo,做出了属于自己的解析model,因为探索过程让本人比较烦躁,所以特此写下详细的实现过程,供新手学习,大牛勿喷。

首先,需要在github上面下载相应的库文件,地址如下https://github.com/icanzilb/JSONModel,下载相应的demo后,找出JsonModel文件库。加入到自己的工程的步骤如下:

1.将JsonModel文件夹导入到工程中。文件目录如下图

            

2.导入SystemConfiguration.framework这个库。

3.将自己的工程设置为ARC模式。

4.自己新建HourlyModel类,继承自JsonModel类,在HourlyModel.h文件中添加如下代码

<span style="white-space:pre">	</span>@property (nonatomic, assign) NSString *date;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger hum;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger pop;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger pres;
 <span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger tmp;
<span style="white-space:pre">	</span>@property (nonatomic, retain) WindModel *wind;
新建WindMedel类,继承自JsonModel类,在WindModel.h文件中添加如下代码:
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger deg;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSString *dir;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSString *sc;
<span style="white-space:pre">	</span>@property (nonatomic, assign) NSInteger spd;

5.在程序中获取一个字典类型的数据,用来进行解析。例如我的这个字典,这个字典是嵌套型的,比较适合演示。结构如下:

字典数据赋给设定好的model类代码如下,hourDictionary字典即为上图所示目录结构:

            HourlyModel *hourlyModel = [[HourlyModel alloc] initWithDictionary:hourlyDictionary error:nil];

此时hourlyModel对象的所有值已经被赋予数值,打印即可显示。至此解析完成。


6.某种情况下可能会因为服务器返回的某个为空导致程序崩溃,这个时候我们可以将数据类型设置为Optional,即可避免崩溃。代码如下:

一般情况下,我们不想因为服务器的某个值没有返回就使程序崩溃, 我们会加关键字Optional.

<span style="white-space:pre">	</span>@property (nonatomic, assign) NSString<Optional>* str;
当我们不想要某个属性时,可以选用ignore属性,代码如下:
<span style="white-space:pre">	</span>@property (nonatomic,assign) NSString<Ignore>* str;


有了这个第三方库,数据解析变得更加简单了,新手朋友们可以尝试一下。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章