iOS JSONModel使用詳解__C語言

來源:互聯網
上載者:User

JSONModel 是一個庫,他能智能並且快速的建立出資料 model,你可以在你的 iOS 項目或者 OSX 項目上使用它.
JSONModel使用方法
1*建立一個你自己的類,並繼承至 JSONModel
2.在你的標頭檔裡面進行聲明你所需要的 JSON key值
3* .m檔案中你不需要做其他的事情了.

接下來簡單介紹一下 JSONModel的一些常規使用法則
1. JSONModel內建有 有效性檢查,如果指定的伺服器返回的某個欄位沒有傳回值,而且該又是必須的, 像下面這樣寫,則會拋出異常

@property (nonatomic, strong) NSString *Nothing;

一般情況下,我們不想因為伺服器的某個值沒有返回就使程式崩潰, 我們會加關鍵字Optional.

@property (nonatomic, strong) NSString <Optional>*Nothing;

2.如果傳過來的 JSON 合法,你所定義的所有的屬性都會與該 JSON 值相匹配,並且 JSONModel 也會嘗試儘可能的轉換成你所想要的資料:

// 本來是NSInteger類型直接給轉換為 NSString@property (nonatomic, strong) NSString *city_id;

3自動把底線方式的命名轉為駝峰命名屬性。還有類似的,如大寫轉為小寫方法

@property (nonatomic, strong) NSString *city_name;// 在.m檔案中寫上這個方法+(JSONKeyMapper*)keyMapper {    return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];}@property (nonatomic, strong) NSString *cityName;

JSONModel處理資料問題
請求網址: http://api.lanrenzhoumo.com/district/list/allcity?session_id=00004016b3e14bbea40c1aa1a14c2273a35352
請求資料類型

// 方式一建立一個model 繼承JSONModel 聲明自己想要的key 在解析資料時我們可以直接使用下面的方法 根據字典建立mode AmbitusCityTypeModel *model = [[AmbitusCityTypeModel alloc] initWithDictionary:dic error:nil]; // initWithDictionary方法 相當於正常解析時 建立model kvc賦值//方式二//根據字典的數組建立model的數組 得到的數組裡面都是model類型的資料   self.dataArray = [LoanModel arrayOfModelsFromDictionaries:tempArr];

JSONModel的處理複雜嵌套的問題 還是以上面的資料和介面舉例

聲明兩個model 這個嵌套資料都是這種模型的#import "JSONModel.h"@protocol AmbitusCityModel@end@interface AmbitusCityModel : JSONModel@property (nonatomic, assign) NSInteger city_id;@property (nonatomic, strong) NSString *city_name;@end#import "AmbitusCityModel.h"@implementation AmbitusCityModel@end// 第二個model#import "JSONModel.h"#import "AmbitusCityModel.h"@interface AmbitusCityTypeModel : JSONModel@property (nonatomic, strong) NSString *begin_key;@property (nonatomic, strong) NSMutableArray<AmbitusCityModel> *city_list;@end#import "AmbitusCityTypeModel.h"@implementation AmbitusCityTypeModel@end// 解析過程如下- (void)setUpData {    NSString *urlString = [NSString stringWithFormat:@"%@",@"http://api.lanrenzhoumo.com/district/list/allcity?session_id=00004016b3e14bbea40c1aa1a14c2273a35352"];    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString] cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30.0];    [request setHTTPMethod:@"GET"];    self.dataArray = [NSMutableArray array];    NSURLSessionConfiguration *config = [NSURLSessionConfiguration ephemeralSessionConfiguration];    NSURLSession *session = [NSURLSession sessionWithConfiguration:config];    self.dataArray = [NSMutableArray array];    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {        if (error) {            NSLog(@"Httperror: %@%ld", error.localizedDescription, error.code);        } else {            if (data) {                NSDictionary *tempDict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil];                            self.dataArray = [TypeTwoModel arrayOfModelsFromDictionaries:[tempDict valueForKey:@"result"]];                dispatch_async(dispatch_get_main_queue(), ^{                    [self.tableView reloadData];                });              }        }    }];    [dataTask resume];}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.