说明
JSONModel是一个映射json数据和model的第三方工具,网络请求数据之后有jsonModel来映射数据。
import <JSONModel/JSONModel.h>
变量名不同处理
使用jsonmodel需要继承JSONModel类,由于model中的变量名称可能与json中的数据类型不同,所以需要在model中重写keyMapper方法,代码如下:
+ (JSONKeyMapper *)keyMapper
{
//@"id"json数据
//@"identity"model数据
return [[JSONKeyMapper alloc] initWithDictionary:@{@"id":@"identity",@"user.avatar_image.url":@"imageUrl"}];
}
是否可以返回为空
当model中存在json中不存在的数据时,返回数据会crash,或者返回的数据可以为空时,可以进行选择操作,示例如下:
//当前行(cell)的数据
@property (strong, nonatomic) DataItem<Optional> *item;
对于嵌套数据解析时,需要指明嵌套的数据类型才可解析
//数据源
@property (strong , nonatomic) NSMutableArray<DataItem> *data;
数组需要指明包含对象类型
@property(nonatomic)NSArray<NSString> *languages;
数据转化方式
字符串
NSString *jsonStr = @"{\"id\":\"10\", \"country\":\"Germany\", \"dialCode\": 49, \"isInEurope\":true}"; // 假设这就是从服务器上获取的json数据
CountryModel *country = [[CountryModel alloc] initWithString:jsonStr error:nil];
二进制数据
NSData *data = [NSData dataWithContentsOfFile:filepath];
ZZYouDianYun *yun = [[ZZYouDianYun alloc]initWithData:data error:&error];
字典
DataList *list = [[DataList alloc] initWithDictionary:responseObject error:nil];