在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:@interfaceBook:NSObject@propertyNSString*name;@propertyNSIntegerpage;@propertyNSString*desc;@propertyNSString*bookID;@end@implementationBook//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。+ (NSDictionary*)modelCustomPropertyMapper {return@{@"name":@"n",@"page":@"p",@"desc":@"ext.desc",@"bookID": @[@"id",@"ID",@"book_id"]};}@end
重点是这张图片
图片.png
2,json数据中有多层,但是是不同类型,此时就要用到:容器类属性
@classShadow,Border,Attachment;@interfaceAttributes@propertyNSString*name;@propertyNSArray*shadows;//Array<Shadow>@propertyNSSet*borders;//Set<Border>@propertyNSMutableDictionary*attachments;//Dict<NSString,Attachment>@end@implementationAttributes// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。+ (NSDictionary*)modelContainerPropertyGenericClass {return@{@"shadows": [Shadowclass],@"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": [Shadowclass],@"borders": Border.class,@"attachments":@"Attachment"};}替换字符:+ (NSDictionary*)modelCustomPropertyMapper {return@{@"name":@"n",@"page":@"p",@"desc":@"ext.desc",@"bookID": @[@"id",@"ID",@"book_id"]};}
作者:罗显友
链接:https://www.jianshu.com/p/992ce23453ee
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
网友评论