iOS上的jsonObject
2014-07-10 15:08
561 查看
看着java上的jsonObject比较眼馋,于是自己做了一个,代码如下,完善了错误信息:
NSObject+json.h
NSObject+json.m
使用方法和案例:
ATClass.h
#import <Foundation/Foundation.h>
@interface ATClass : NSObject
@property (strong) NSArray *array;
@property (strong) NSString *name;
@property NSInteger index;
@end
ATClass.m
#import "ATClass.h"
@implementation ATClass
@synthesize name,array,index;
-(id)init{
self = [super init];
if (self) {
self.array = [NSArray arrayWithObjects:@"123", nil];
self.name = @"1234";
self.index =23;
}
return self;
}
-(NSArray*)attributeKeys{
return [NSArray arrayWithObjects:@"array",@"name",@"index",nil];
}
@end
main.m
ATClass *class = [[ATClass alloc]init];
NSData *data = [class createJsonData:nil];
class.array = [NSArray arrayWithObjects:@"321", nil];
class.index = 32;
NSArray *object =[NSArray arrayWithObjects:@"123312", nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options:0 error:nil];
NSError *error;
// class = [class jsonObject:jsonData error:&error];
class = [class jsonObject:data error:&error];
NSLog(@"%@",error);
NSObject+json.h
#import <Foundation/Foundation.h> @interface NSObject (json) -(id)jsonObject:(NSData *)data error:(NSError **)error; -(NSData *)createJsonData:(NSError **)error; @end
NSObject+json.m
#import "NSObject+json.h" @implementation NSObject (json) -(id)jsonObject:(NSData *)data error:(NSError **)error{ id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:error]; if (error ==nil&&[jsonObject count]!=0){ @try { NSArray *array = [jsonObject allKeys]; //因为有可能抛出异常来 NSArray *arrayKey = [self attributeKeys]; //比较两个数组的元素,如果本类里面的元素包含了接受到的json字典里面的元素即可,如果不包含就抛出错误并返回nil NSSet *jsonSet = [NSSet setWithArray:array]; NSSet *attributeKeySet = [NSSet setWithArray:arrayKey]; if ([jsonSet isSubsetOfSet:attributeKeySet]) { for (NSString *strKey in array) { [self setValue:[jsonObject objectForKey:strKey] forKey:strKey]; } }else{ *error = [self _createExceptionError:@"this NSData has an invalid argument"]; return nil; } } @catch (NSException *exception) { *error = [self _createExceptionError:[NSString stringWithFormat:@"%@",exception]]; return nil; } }else{ *error = [self _createExceptionError:@"this NSData is an invalid argument for jsonObject"]; return nil; } return self; } -(NSData *)createJsonData:(NSError *__autoreleasing *)error { if ([self respondsToSelector:@selector(attributeKeys)]) { //必须重载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:NSJSONWritingPrettyPrinted error:error]; } return nil; } -(NSError *)_createExceptionError:(NSString *)errorMsg{ NSDictionary *userInfo = [NSDictionary dictionaryWithObject:errorMsg forKey:NSLocalizedDescriptionKey]; return [NSError errorWithDomain:@"jsonObjectException" code:0 userInfo:userInfo]; } @end
使用方法和案例:
ATClass.h
#import <Foundation/Foundation.h>
@interface ATClass : NSObject
@property (strong) NSArray *array;
@property (strong) NSString *name;
@property NSInteger index;
@end
ATClass.m
#import "ATClass.h"
@implementation ATClass
@synthesize name,array,index;
-(id)init{
self = [super init];
if (self) {
self.array = [NSArray arrayWithObjects:@"123", nil];
self.name = @"1234";
self.index =23;
}
return self;
}
-(NSArray*)attributeKeys{
return [NSArray arrayWithObjects:@"array",@"name",@"index",nil];
}
@end
main.m
ATClass *class = [[ATClass alloc]init];
NSData *data = [class createJsonData:nil];
class.array = [NSArray arrayWithObjects:@"321", nil];
class.index = 32;
NSArray *object =[NSArray arrayWithObjects:@"123312", nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options:0 error:nil];
NSError *error;
// class = [class jsonObject:jsonData error:&error];
class = [class jsonObject:data error:&error];
NSLog(@"%@",error);
相关文章推荐
- IOS json 转 Object / ios json to Object / ios json convert Object
- ios中json object转换成字符串
- iOS 4.3下解析JSON的Object-C类库
- IOS json转对象 /json 转 Object / ios json to Object / ios json convert Object
- IOS网络操作-使用Alamofire和ObjectMapper处理JSON转对象
- iOS JSON与Object之间的映射 ObjectMapper For Swift
- [转载] IOS json 转 Object / ios json to Object / ios json convert Object
- IOS解析json报错-[__NSCFString objectFromJSONString]: unrecognized selector sent to 解决办法
- IOS解析json报错-[__NSCFString objectFromJSONString]: unrecognized selector sent to 解决办法
- IOS json转对象 /json 转 Object / ios json to Object / ios json convert Object
- IOS json 转 Object / ios json to Object / ios json convert Object
- iOS开发 AFNetworking 关于JSON text did not start with array or object and option to allow fragments not
- JSON(JavaScript Object Notation)入门(二)
- JSON(JavaScript Object Notation)
- JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
- JSON (JavaScript Object Notation)
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- JSON(JavaScript Object Notation)入门(一)
- JSON简介 (Javascript Object Nonation)