JSONModel是一个库,让我们能快速创建智能数据模型。
基本使用
假设我有这样一个JSON数据
{
"country":"Germany",
"dialCode": 49,
"isInEurope":YES
}
- 创建一个新的Objective-C类,并使其继承JSONModel类。
- 声明与JSON键同名的属性。
#import "JSONModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface CountryModel : JSONModel
@property (nonatomic, copy) NSString* country;
@property (nonatomic, copy) NSString* dialCode;
@property (nonatomic, assign) BOOL isInEurope;
@end
NS_ASSUME_NONNULL_END
- 初始化数据模型。
NSError* error = nil;
CountryModel* countryModel = [[CountryModel alloc] initWithDictionary:dict error:error];
如果JSON的验证通过你在你的模型中填充的JSON所有相应的属性。JSONModel也将尝试将尽可能多的数据转换为您所期望的类型,在这个例子中,dialCode将数字转换成字符串。
网络请求数据转换模型
接口:https://news-at.zhihu.com/api/4/version/ios/2.3.0
返回数据示例:
{
"status":1,
"msg":"【更新内容】\r\n\r\n★ 多图有标记 流量壕忽略\r\n★ 出门前离线 没网也能看\r\n★ 喜欢请好评 不喜快吐槽\r\n★ 萌妹工程师 邮箱在下面\r\nmua@zhihu.com\r\n(一般人我们不告诉他)",
"latest":"2.5"
}
Objective-C类:
@interface TestModel : JSONModel
@property (nonatomic, assign) int status;
@property (nonatomic, copy) NSString* msg;
@property (nonatomic, copy) NSString* latest;
@end
请求数据:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSString* string = [NSString stringWithFormat:@"https://news-at.zhihu.com/api/4/version/ios/2.3.0"];
string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL* url = [NSURL URLWithString:string];
NSURLRequest* request = [NSURLRequest requestWithURL:url];
NSURLSession* session = [NSURLSession sharedSession];
NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse