jsonObject for IOS
发布时间:2020-12-16 19:15:30 所属栏目:百科 来源:网络整理
导读:如果你干过安卓的,发现有一个比较牛逼的东西,jsonObject可以直接转化为所有的类型。我模仿的做了一个,还不算完美,有些缺陷,贡献给大家,希望大家指点指点。 文件: NSObject+json.h //// NSObject+json.h// JSONTest//// Created by Roy on 14-7-4.//#imp
如果你干过安卓的,发现有一个比较牛逼的东西,jsonObject可以直接转化为所有的类型。我模仿的做了一个,还不算完美,有些缺陷,贡献给大家,希望大家指点指点。
文件: NSObject+json.h // // NSObject+json.h // JSONTest // // Created by Roy on 14-7-4. // #import <Foundation/Foundation.h> @interface NSObject (json) -(id)jsonObject:(NSData *)data error:(NSError **)error; -(NSData *)createJsonDataWithOption:(NSInteger)option error:(NSError **)error; @end 暂时完成两个函数,实现过程: NSObject+json.m
// // NSObject+json.m // JSONTest // // Created by Roy on 14-7-4. // #import "NSObject+json.h" @implementation NSObject (json) -(id)jsonObject:(NSData *)data error:(NSError **)error{ id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:error]; if (error ==nil&&[jsonObject count]!=0){ @try { NSArray *array = [jsonObject allKeys]; for (NSString *strName in array) { NSString *str = [NSString stringWithFormat:@"%@",strName]; [self setValue:[jsonObject objectForKey:strName] forKey:str]; } } @catch (NSException *exception) { NSLog(@"有错误"); return nil; } @finally { return nil; } }else if([jsonObject count]==0){ NSLog(@"获得的数据为空"); return nil; } return self; } -(NSData *)createJsonDataWithOption:(NSInteger)option error:(NSError *__autoreleasing *)error { if ([self respondsToSelector:@selector(attributeKeys)]) { NSArray *array = [self attributeKeys]; NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; for (NSString *keyName in array) { [dic setObject:[self valueForKey:keyName] forKey:keyName]; } return [NSJSONSerialization dataWithJSONObject:dic options:option error:error]; } return nil; } @end
注意:如果你想使用这个类,你必须把你的基于NSObject的数据类实现atrributeKeys ,该类继承于NSClassDescription类,这是个抽象类。需要你实现。
下面是我的例子
ATClass.h
// // ATClass.h // JSONTest // // Created by Roy on 14-7-4. // Copyright (c) 2014年 byids. All rights reserved. // #import <Foundation/Foundation.h> @interface ATClass : NSObject @property (strong) NSArray *array; @property (strong) NSString *name; @end ATClass.m
// // ATClass.m // JSONTest // // Created by Roy on 14-7-4. // Copyright (c) 2014年 byids. All rights reserved. // #import "ATClass.h" @implementation ATClass @synthesize name,array; -(id)init{ self = [super init]; if (self) { self.array = [NSArray arrayWithObjects:@"123",nil]; self.name = @"1234"; } return self; } -(NSArray*)attributeKeys{ return [NSArray arrayWithObjects:@"array",@"name",nil]; } @end 然后是使用他们:
ATClass *class = [[ATClass alloc]init]; NSData *data = [class createJsonDataWithOption:0 error:nil]; class.array = [NSArray arrayWithObjects:@"321",nil]; class = [class jsonObject:data error:nil]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |