JSONModel使用总结
@interface JSONModel :NSObject <AbstractJSONModelProtocol>
/创建一个新的模型实例,并初始化它的JSON文本参数使用UTF8编码 -(instancetype)initWithString:(NSString*)string error:(JSONModelError**)err; //创建一个新的模型实例,并初始化它的JSON文本参数使用给定的编码 -(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err; // required协议方法,通过字典实例化模型 -(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err; // 讲模型内容导出到字典 -(NSDictionary*)toDictionary; // 导出所有模型到json数据,并返回 -(NSString*)toJSONString; // 讲装有字典的数组一次实例化对应的模型存在数组里 +(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array; // 将装有模型的数组中模型数据转为字典存入数组 +(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array;
-(NSString*)indexPropertyName; -(BOOL)isEqual:(id)object; -(NSComparisonResult)compare:(id)object;
-(BOOL)validate:(NSError**)error; //如果你的属性名称不匹配你的JSON模型关键的名字 +(JSONKeyMapper*)keyMapper; +(void)setGlobalKeyMapper:(JSONKeyMapper*)globalKeyMapper; // 如果Model中有多余的属性,不用考虑; +(BOOL)propertyIsOptional:(NSString*)propertyName; +(BOOL)propertyIsIgnored:(NSString*)propertyName;
@interface JSONKeyMapper :NSObject // toModel将JSON键名转换为模型属性名 toJSON将模型属性名转换为一个JSON键
-(instancetype)initWithJSONToModelBlock:(JSONModelKeyMapBlock)toModel modelToJSONBlock:(JSONModelKeyMapBlock)toJSON; // 创建一个JSONKeyMapper实例,基于您提供的映射,在映射参数。使用JSON键名称作为键,你的JSONModel属性名称作为值。{ @“crazy_JSON_name”:@“myCamelCaseName”} -(instancetype)initWithDictionary:(NSDictionary*)map;
// 讲下划线转换为驼峰命名方式 +(instancetype)mapperFromUnderscoreCaseToCamelCase; 下面两段代码都可以实现匹配
+(JSONKeyMapper*)keyMapper2 { NSDictionary *dict =@{ @"address" :@"address", @"author.header_img" :@"authorHeaderImage", @"author.uid" :@"authorUserId", @"author.username" :@"authorauthorUsername", @"city" :@"city", @"city_id" :@"cityId", @"cover_img" :@"coverImg", }; JSONKeyMapper *mapper = [[JSONKeyMapperalloc] initWithDictionary:dict]; return dict; } // 重写了影射规律 +(JSONKeyMapper*)keyMapper { /* 注意JuhuiModel里面需要映射2种类型 1. 驼峰Camel命名规范 2. 把author.header_img和author_username要映射到JuhuiModel直接字段里面 */ JSONKeyMapper *mapper = [JSONKeyMappermapperFromUnderscoreCaseToCamelCase]; // 取得影射的blocks对象 JSONModelKeyMapBlock modelBlock = mapper.modelToJSONKeyBlock;
// 根据上述的重新创建映射条件 JSONKeyMapper *newMapper = [[JSONKeyMapperalloc] initWithJSONToModelBlock:nilmodelToJSONBlock:^NSString *(NSString *keyName) { // 告诉我们映射规律 if ([keyNameisEqualToString:@"authorHeaderImage"]) { return@"author.header_img"; } elseif ([keyName isEqualToString:@"authorUsername"]) { return@"author.username"; } elseif ([keyName isEqualToString:@"authorUserId"]) { return@"author.uid"; } elseif ([keyName isEqualToString:@"coverImage"]) { return@"cover_img"; } elseif ([keyName isEqualToString:@"desc"]) { return@"descript"; } return modelBlock(keyName); }]; return newMapper; } 另外,使用时创建Model继承jsonmodel,根据项目中需求,在model中重写jsonModel的方法(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |