YYModel
// JSON:
{
"n":"Harry Pottery",
"p": 256,
"ext" : {
"desc" : "A book written by J.K.Rowing."
},
"ID" : 100010
}
// Model:
@interface Book : NSObject
@property NSString *name;
@property NSInteger page;
@property NSString *desc;
@property NSString *bookID;
@end
@implementation Book
//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。
+ (NSDictionary *)modelCustomPropertyMapper {
return @{@"name" : @"n",
@"page" : @"p",
@"desc" : @"ext.desc",
@"bookID" : @[@"id",@"ID",@"book_id"]};
}
@end
KVC
这样的数据.h文件里
@property (nonatomic,strong) NSString *n;
@property (nonatomic,assgin)NSInteger p;
@property (nonatomic,strong) NSDictionary *ext;
@property (nonatomic,strong) NSString *ID;
KVC用前要去.m里面实现两个协议防止崩溃。
@implementation KVCmodel
- (id) valueForUndefinedKey:(NSString *)key
{
return nil;
}
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
// NSStringFromClass获取自己类的名字
NSLog(@"%@类没有定义%@属性",NSStringFromClass([self class]),key);
}
- (void)setValue:(id)value forKey:(NSString *)key
{
这个方法里面可以写很多判断
// 父类完成转换成NSNumber工作
if ([value isKindOfClass:[NSNumber class]]) {
// (1)number转string
value = [value stringValue];
// (2)number通过NSNumberFormatter转string
// NSNumberFormatter *format = [[NSNumberFormatter alloc]init];
// value = [format stringFromNumber:value];
}else{
[super setValue:value forKey:key];
}
}
}else
{
[super setValue:value forKey:key];
}
}
两个都可以一句话完美解析数据,我是觉得如果需要 另一个模型装子数组的所有数据,那KVC最棒没有之一,KVC 是系统开放的API效率自然也高些。