mantle的Array与dictionary
2015-09-02 18:27
344 查看
json格式:
NSDictionary *dict = @{
@"name":
@"Bob",
@"cars":
@[
@{
@"make":@"ford",
@"year":
@"1972" },
@{
@"make": @"mazda",
@"year":
@"2000" }
],
@"owner":@{
@"name":@"arthur",
@"gender":@"male",
@"age":
@101,
},
@"date":@"2015-09-02"
};
//.h
#import "MTLModel.h"
#import <Mantle.h>
@interface CarModel :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *make;
@property (nonatomic,
copy) NSString *year;
@end
@interface Owner :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *name;
@property (nonatomic,
copy) NSString *gender;
@property (nonatomic)
NSInteger age;
@end
@interface TestModel :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *name;
@property (nonatomic,
strong) NSArray *cars;
@property (nonatomic,
strong) Owner *owner;
@property (nonatomic,
copy) NSString *ownername;
@property (nonatomic,
copy) NSString *maker;
@end
//.m
#import "TestModel.h"
@implementation CarModel
+ (NSDictionary *)JSONKeyPathsByPropertyKey{
return
@{@"make":@"make",@"year":@"year"};
}
@end
@implementation Owner
+ (NSDictionary*)JSONKeyPathsByPropertyKey{
return
@{@"name":@"name",
@"gender":@"gender",@"age":@"age",
};
}
@end
@implementation TestModel
//指向一个array的映射
+ (NSValueTransformer *)carsJSONTransformer {
return [MTLJSONAdapter
arrayTransformerWithModelClass:CarModel.class];
}
//指向一个dict的映射
+ (NSValueTransformer*)ownerJSONTransformer{
return [MTLJSONAdapter
dictionaryTransformerWithModelClass:Owner.class];
}
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return
@{
@"name":@"name",
@"cars":@"cars",
@"owner":@"owner",
@"ownername":@"owner.name",
@"maker":@"cars",
};
}
//找出cars下第一个item的make
+ (NSValueTransformer *)makerJSONTransformer {
return [MTLValueTransformer
transformerUsingForwardBlock:^id(NSArray *cars,
BOOL *success,
NSError **error) {
return [cars.firstObject
valueForKey:@"make"];
}];
}
开始解析:
NSError *error;
TestModel *tm = [MTLJSONAdapter
modelOfClass:[TestModel
class]
fromJSONDictionary:dict error:&error];
NSLog(@"%@",tm);
CarModel *car = [tm.cars
objectAtIndex:1];
NSLog(@"%@",car.make);
Owner *owner = tm.owner;
NSLog(@"%@",owner.name);
NSLog(@"%@",tm.ownername);//直接取子类别下数据
NSDictionary *dict = @{
@"name":
@"Bob",
@"cars":
@[
@{
@"make":@"ford",
@"year":
@"1972" },
@{
@"make": @"mazda",
@"year":
@"2000" }
],
@"owner":@{
@"name":@"arthur",
@"gender":@"male",
@"age":
@101,
},
@"date":@"2015-09-02"
};
//.h
#import "MTLModel.h"
#import <Mantle.h>
@interface CarModel :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *make;
@property (nonatomic,
copy) NSString *year;
@end
@interface Owner :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *name;
@property (nonatomic,
copy) NSString *gender;
@property (nonatomic)
NSInteger age;
@end
@interface TestModel :
MTLModel<MTLJSONSerializing>
@property (nonatomic,
copy) NSString *name;
@property (nonatomic,
strong) NSArray *cars;
@property (nonatomic,
strong) Owner *owner;
@property (nonatomic,
copy) NSString *ownername;
@property (nonatomic,
copy) NSString *maker;
@end
//.m
#import "TestModel.h"
@implementation CarModel
+ (NSDictionary *)JSONKeyPathsByPropertyKey{
return
@{@"make":@"make",@"year":@"year"};
}
@end
@implementation Owner
+ (NSDictionary*)JSONKeyPathsByPropertyKey{
return
@{@"name":@"name",
@"gender":@"gender",@"age":@"age",
};
}
@end
@implementation TestModel
//指向一个array的映射
+ (NSValueTransformer *)carsJSONTransformer {
return [MTLJSONAdapter
arrayTransformerWithModelClass:CarModel.class];
}
//指向一个dict的映射
+ (NSValueTransformer*)ownerJSONTransformer{
return [MTLJSONAdapter
dictionaryTransformerWithModelClass:Owner.class];
}
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return
@{
@"name":@"name",
@"cars":@"cars",
@"owner":@"owner",
@"ownername":@"owner.name",
@"maker":@"cars",
};
}
//找出cars下第一个item的make
+ (NSValueTransformer *)makerJSONTransformer {
return [MTLValueTransformer
transformerUsingForwardBlock:^id(NSArray *cars,
BOOL *success,
NSError **error) {
return [cars.firstObject
valueForKey:@"make"];
}];
}
开始解析:
NSError *error;
TestModel *tm = [MTLJSONAdapter
modelOfClass:[TestModel
class]
fromJSONDictionary:dict error:&error];
NSLog(@"%@",tm);
CarModel *car = [tm.cars
objectAtIndex:1];
NSLog(@"%@",car.make);
Owner *owner = tm.owner;
NSLog(@"%@",owner.name);
NSLog(@"%@",tm.ownername);//直接取子类别下数据
相关文章推荐
- android蓝牙和网络通信项目总结(一)
- ios AVPlayer无法在线播放视频
- 那些做爱是不是这样?
- poj 3693
- Cocos2d继承结构图
- Android自定义控件二
- Eclipse中Axis2发布WebService
- 自然链接
- github 不用数账号和密码的俩种方法
- Class类---反射学习笔记(一)
- 游标使用
- Class类---反射学习笔记(一)
- 多队列网卡
- 版本更新时Activity作为对话框形式弹出进度条
- nginx之nginx部署
- Windows与Ubuntu之间共享文件
- 搭建Spring + SpringMVC + Mybatis框架之一(创建项目)
- C++模板元编程 - 1 基本数据类型和运算
- 断舍离——有时间的话
- Ionic之搭建开发环境,并创建工程