iOS开发JsonMode json嵌套解析

释放双眼,带上耳机,听听看~!

上一片文章:iOS Json转Model(一)中提及了jsonModel这个开源库:这里介绍一下它的(嵌套解析)用法。

以下是从服务器获得的数据:

1.首先声明一个继承自JSONModel的基类:

//.h




#import "JSONModel.h"

@interface BaseModel :
JSONModel

@end

//.m

@implementation BaseModel

/**用于将服务器传过来的以下划线字段转化为模型的驼峰类型:比如上面的available_predeposit, 但模型中我们的字段如果我们写为(通常我们都这么写)availablePredeposit,如果不重写该函数则availablePredeposit就无法赋值*/

+ (JSONKeyMapper *)keyMapper {

    return [JSONKeyMappermapperFromUnderscoreCaseToCamelCase];

}

/**声明模型中的字段可以存在或不存在服务器的字段,

 否则模型不会被赋值,比如说下面的Model中如果有字段code1,如果没这样重写这个方法,这整个model就不会被赋值,解析的结果是nil。

 */

+ (BOOL)propertyIsOptional:(NSString *)propertyName {

    return
YES;

}

@end

 

 

二、我们发现数据的根字段有:info、code以及data三个字段,而data下又有member字段,member下又有不可分割的字段

所以我们需要声明三个模型

模型 1

@interface Model : BaseModel

@property (nonatomic,
strong) DataModel *data;  //注意字段“data”必须和服务器的字段相同,不能写成data1或其他的

@property (nonatomic,
copy) NSString *info;       //

@property (nonatomic,
assign) NSInteger code;

@end

 

模型 2

@interface DataModel :
BaseModel

@property (nonatomic,
strong) MemberModel *member;

@end

 

模型 3

@interface MemberModel :
BaseModel

@property (nonatomic,
copy) NSString *points;

@property (nonatomic,
copy) NSString *mobile;

@property (nonatomic,
copy) NSString *nick;

@property (nonatomic,
copy) NSString *id;

@property (nonatomic,
copy) NSString *avatar;

@property (nonatomic,
copy) NSString *name;

@property (nonatomic,
copy) NSString *availablePredeposit;

@end

 

三、使用方法:
Model *model = [[Model alloc] initWithDictionary:dataDic error:nil]; //这里的dataDic就是从服务器放回的数据

 

然后mode中的所有字段都被赋值了,然后你需要name的时候,mode.data.member.name就可以,是不是既方便又结构清晰。

 

人已赞赏
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索