MJExtension库是一个轻量级的字典和模型之间相互转换的轻量级框架
开发过程中有些数据解析过程可能比较复杂,重复代码比较多,并且容易出现问题,使用MJextension可以使代码更加清晰简洁
如何使用MJExtension
一、首先在viewController.m导入MJExtension库,可以手动导入也可以使用cocoPods,建议使用cocopods(cocopods使用方法比较简单方便)
二、通过AFNetworking或其他方式请求到数据,我请求的数据打印出来如下:
TestDicAipay---{
"is_have_ds" = 1;
"is_hn" = 0;
"man_count" = 4;
"man_list" = (
{
area = "\U5b81 \U590f";
jobs = "\U660e\U661f\U6a21\U7279";
mobile = 18519668491;
nickname = "\U6211\U662f";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-07-18/150035766163.jpeg";
},
{
area = "\U5c71\U897f\U7701";
jobs = "\U81ea\U7531\U804c\U4e1a";
mobile = 15364600910;
nickname = "\U5c0f\U56db";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-07-26/15010716051.jpeg";
}
);
"woman_count" = 20;
"woman_list" = (
{
area = "\U4e0a\U6d77\U5e02";
jobs = "\U6587\U79d8\U52a9\U7406";
mobile = 15313569674;
nickname = "\U6587\U6587";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-12/58774313d4d16.jpg";
},
{
area = "\U5317\U4eac\U5e02";
jobs = "\U7f51\U7ea2";
mobile = 13078763504;
nickname = "\U8bfa\U96c5";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-05-26/149576712220.jpeg";
},
{
area = "\U53f0 \U6e7e";
jobs = "\U7f51\U7ea2";
mobile = 15601282577;
nickname = "\U5973\U738bC-cup";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-05/586dbaf83217a.jpg";
},
{
area = "\U6d59\U6c5f\U7701";
jobs = "\U81ea\U5a92\U4f53\U4eba";
mobile = 18225221622;
nickname = "\U5f90\U5b50\U6db5";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-10/58749c1deaece.jpg";
},
{
area = "\U5c71\U4e1c\U7701";
jobs = "\U827a\U4eba\U7ecf\U7eaa";
mobile = 15811048531;
nickname = "\U96e8\U6167";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-05/586dbc17992bd.jpg";
},
{
area = "\U5b89\U5fbd\U7701";
jobs = "\U660e\U661f\U6a21\U7279";
mobile = 15811043857;
nickname = "\U73e0\U5a77";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-05/586d9c04a7c54.jpg";
},
{
area = "\U5c71\U4e1c\U7701";
jobs = "\U660e\U661f\U6a21\U7279";
mobile = 15811043767;
nickname = "\U51cc\U6b23";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-05-26/149576449686.jpeg";
},
{
area = "\U6e56\U5317\U7701";
jobs = "\U7f51\U7ea2";
mobile = 15213744879;
nickname = "\U9759\U9999";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-13/58783d1fb1f53.jpg";
},
{
area = "\U5317\U4eac\U5e02";
jobs = "\U660e\U661f\U6a21\U7279";
mobile = 15910482780;
nickname = "\U5a05\U8431";
thumb = "https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-01-18/587ecd92f118f.jpg";
}
);
}
三、导入#import "MJExtension.h"使用该库完成数据解析
- 创建一个数据类ComplexModel如下,
// .h文件
#import <Foundation/Foundation.h>
@interface ComplexModel : NSObject
@property (nonatomic,copy)NSString * is_have_ds;
@property (nonatomic,copy)NSString * is_hn;
@property (nonatomic,copy)NSString * man_count;
@property (nonatomic,copy)NSString * woman_count;
@property (nonatomic,strong)NSMutableArray * man_list;
@property (nonatomic,strong)NSMutableArray * woman_list;
@end
// .m文件
#import "ComplexModel.h"
@implementation ComplexModel
+ (NSDictionary *)mj_objectClassInArray
{
return @{
@"man_list" : @"Man_list_Model",
@"woman_list" : @"Man_list_Model"
};
}
@end
2.在viewController.m文件中,请求到数据的位置写如下代码
//TestDicAipay是请求到的数据字典,如最文章上端代码
ComplexModel * _complexModel = [ComplexModel mj_objectWithKeyValues:TestDicAipay];
NSLog(@"%@\n%@\n%@\n%@\n",_complexModel.is_have_ds,_complexModel.is_hn,_complexModel.man_count,_complexModel.woman_count);
打印结果如下:
2018-01-02 13:14:31.030 WeichartPay[10249:556133]
1
0
4
20
到这里我们就把字典中最外层的数据解析出来啦,紧接着我们需要解析一下数据中man_list和woman_list两个数组中的字典解析出来
3.首先创建一个新的类,存放man_list里的数据,如下
// .h文件
@interface Man_list_Model : NSObject
@property (nonatomic,copy)NSString * area;
@property (nonatomic,copy)NSString * jobs;
@property (nonatomic,copy)NSString * mobile;
@property (nonatomic,copy)NSString * nickname;
@property (nonatomic,copy)NSString * thumb;
@end
// .m文件
#import "Man_list_Model.h"
@implementation Man_list_Model
@end
2.在viewControll.m请求到数据的位置,添加如下代码
for (Man_list_Model * manList in _complexModel.man_list) {
NSLog(@"----\n%@\n%@\n%@\n%@\n%@",manList.area,manList.jobs,manList.mobile,manList.nickname,manList.thumb);
}
打印结果如下
宁 夏
明星模特
18519668491
我是
https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-07-18/150035766163.jpeg
2018-01-02 13:14:31.030 WeichartPay[10249:556133]
山西省
自由职业
15364600910
小四
https://huayiquan.oss-cn-beijing.aliyuncs.com/Uploads/2017-07-26/15010716051.jpeg
2018-01-02 13:14:31.031 WeichartPay[10249:556133]
这里数组manlist数组里的数据就解析出来了,接下来解析woman_list数组里的数据(woman_list数组里的数据和manlist里数据类型是相同的所以不用再添加model类放woman_list数据)