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

重点是这张图片


图片.png

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

@class Shadow, Border, Attachment;

@interface Attributes
@property NSString *name;
@property NSArray *shadows; //Array<Shadow>
@property NSSet *borders; //Set<Border>
@property NSMutableDictionary *attachments; //Dict<NSString,Attachment>
@end

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

将每一层的数据放到一个容器里面,容器的数据类型由返回的json决定。
图片.png

图片.png

图片.png

图片.png

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


图片.png

图片.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"]};
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容