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;


有了這個第三方庫,數據解析變得更加簡單了,新手朋友們可以嘗試一下。


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