您的位置:首页 > Web前端 > JavaScript

JsonMode json嵌套解析

2016-05-19 17:56 411 查看
上一片文章:iOS Json转Model
(一)中提及了jsonModel这个开源库:这里介绍一下它的(嵌套解析)用法。

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



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

//.h

#import "JSONModel.h"

@interface BaseModel :
JSONModel

@end

//.m

@implementation BaseModel

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

+ (JSONKeyMapper *)keyMapper {

    return [JSONKeyMapper
mapperFromUnderscoreCaseToCamelCase];

}

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

 否则模型不会被赋值,比如说下面的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就可以,是不是既方便又结构清晰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: