简单的json/dictionary
// JSON:
{
"uid":123456,
"name":"Harry",
"created":"1965-07-31T00:00:00+0000"
}
// Model:
@interface User : NSObject
@property UInt64 uid;
@property NSString *name;
@property NSDate *created;
@end
@implementation User
@end
// 将 JSON (NSData,NSString,NSDictionary) 转换为 Model:
User *user = [User yy_modelWithJSON:json];
// 将 Model 转换为 JSON 对象:
NSDictionary *json = [user yy_modelToJSONObject];
类型自动转换//下面是为什么我们要使用YYModel 这个第三方库的原因! 以避免各种潜在的崩溃问题。
当 JSON/Dictionary 中的对象类型与 Model 属性不一致时,YYModel 将会进行如下自动转换。自动转换不支持的值将会被忽略,以避免各种潜在的崩溃问题。
Model 属性名和 JSON 中的 Key 不相同 的处理,也就是说我们有时候会遇到比如:id 关键字 或者 img_msg_ad_url 服务器的返回 然而 我们不想在model 中使用这样的 属性
YYmodel 提供了类方法
//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。
会返回一个字典对象 来替换原有的 json key
+ (NSDictionary *)modelCustomPropertyMapper {
return @{@"name" : @"n",
@"page" : @"p",
@"desc" : @"ext.desc",
//你可以把一个或一组 json key (key path) 映射到一个或多个属性。如果一个属性没有映射关系,那默认会使用相同属性名作为映射。
@"bookID" : @[@"id",@"ID",@"book_id"]};
}
//很多时候我们会遇到这样的问题 model 中包含一个数组 然后有model 在这里 YYModle 也提供了一个方法 能够快速的将 Model 包含Modle 的进行转换
model 中有数组的情况 容器类 的返回
// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
+ (NSDictionary *)modelContainerPropertyGenericClass {
return @{@"shadows" : [Shadow class],
@"borders" : Border.class,
@"attachments" : @"Attachment" };
}
网友评论