将JSON数据直接转成NSObject
支持 NSString,NSNumber,int,float,BOOL,NSArray,OtherModel。
2014-07-15 10:44:07 update
从dict取值改为valueForkeyPath,支持用路径来取值了
@interface Test1 : NSObject
@property (assign,nonatomic)int code;
@property (strong,nonatomic)Data *data;
@property (copy,nonatomic)NSString *country;
@property (strong,nonatomic)Data *subdata;
@end
@implementation Test1
+ (void)initialize
{
[super initialize];
[self bindYYJSONKey:@"data.country" toProperty:@"country"];
//country不是自定义的NSObject所以不需要特殊处理
[self bindYYJSONKey:@"data.subdata" toProperty:@"subdata.Data"];
//对应的是subdata property设置为 subdata.ClassName就可了 一般情况这种蛋疼的写法很少吧,不过还是做一下支持。
}
@end
json 数据如下
{
"code": 0,
"data": {
"subdata": {
"country": "米国"
},
"country": "**",
"country_id": "CN",
"area": "华东",
"area_id": "300000",
"region": "安徽省",
"region_id": "340000",
"city": "合肥市",
"city_id": "340100",
"county": "",
"county_id": "-1",
"isp": "电信",
"isp_id": "100017",
"ip": "218.22.9.4"
}
update:2013-07-17
新增
- (NSString *)YYJSONString;
- (NSData *)YYJSONData;
Demo中有体现。
支持自己选择JSON解析器
- NSData (YYJSONHelper)
-(id)YYJSONObject
所以目前只采用iOS自带的NSJSONSerialization
使用方法
-(id)toModel:(Class)modelClass;
传入一个modelClass返回一个modelClass的实例
=
-(id)toModel:(Class)modelClass forKey:(NSString *)key;
传入一个modelClass和key(json的key)返回一个modelClass实例
=
-(NSArray *)toModels:(Class)modelClass;
传入一个modelClass返回一个modelClass的集合
=
-(NSArray *)toModels:(Class)modelClass forKey:(NSString *)key;
传入一个modelClass和key(json的key)返回一个modelClass的集合
NSURL *url = [NSURL URLWithString:@"http://url.cn/DjjSlB"];
NSData *data = [NSData dataWithContentsOfURL:url];
NSArray *shots = [data toModels:[Shot class] forKey:@"shots"];
Player *player = [shots[0] player];
@interface NSObject (YYJSON)
//如果需要获取父类的属性,则重载此方法并且return YES
+ (BOOL)YYSuper;
//映射的字典
+ (NSDictionary *)YYJSONKeyDict;
//自定义绑定
+ (void)bindYYJSONKey:(NSString *)jsonKey toProperty:(NSString *)property;
@end
####具体使用方法看Demo吧