YYModel使用小结

YYmodelgitHub地址

在gitHub上README中有中文说明,以及怎么导入到项目中

现在介绍一下怎么解析复杂多层的数据
参照README中的介绍以及结合我自己项目的经验做一个介绍
1,json数据有一层或者两层多层,但是每一层的嵌套的时候都是字典类型,即为:(不要管这个json格式对不对)

{   
    “1”:“1”,
    “2”:{
            “3”:“3“,
            ”4“:{
                      ”7“:”7“
                    },
   ”5“:”5“,
   ”6“:”6“
            }
}

就是这样一层一层的字典形式的,只需要一层一层的把对应的字段写入model中,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

重点是这张图片


YYModel使用小结_第1张图片
图片.png

2,json数据中有多层,但是是不同类型,此时就要用到:容器类属性

@class Shadow, Border, Attachment;

@interface Attributes
@property NSString *name;
@property NSArray *shadows; //Array
@property NSSet *borders; //Set
@property NSMutableDictionary *attachments; //Dict
@end

@implementation Attributes
// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
+ (NSDictionary *)modelContainerPropertyGenericClass {
    return @{@"shadows" : [Shadow class],
             @"borders" : Border.class,
             @"attachments" : @"Attachment" };
}
@end

将每一层的数据放到一个容器里面,容器的数据类型由返回的json决定。
YYModel使用小结_第2张图片
图片.png

YYModel使用小结_第3张图片
图片.png

YYModel使用小结_第4张图片
图片.png

YYModel使用小结_第5张图片
图片.png

3,model里面如何嵌套model(满足的要求就是 嵌套的都是字典类型)


YYModel使用小结_第6张图片
图片.png

YYModel使用小结_第7张图片
图片.png

4,YYmodel还有别的功能,都在README中,目前我就用这个解析数据,满足任何坑的后台,能够拿到任何层的数据

纯字典和字典数组混合,替换关键字,映射类的方法不同

映射:
// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
+ (NSDictionary *)modelContainerPropertyGenericClass {
    return @{@"shadows" : [Shadow class],
             @"borders" : Border.class,
             @"attachments" : @"Attachment" };
}
替换字符:
+ (NSDictionary *)modelCustomPropertyMapper {
    return @{@"name" : @"n",
             @"page" : @"p",
             @"desc" : @"ext.desc",
             @"bookID" : @[@"id",@"ID",@"book_id"]};
}


你可能感兴趣的:(YYModel使用小结)