jsonObject for IOS
来源:互联网 发布:java soa架构是什么 编辑:程序博客网 时间:2024/06/05 16:05
如果你干过安卓的,发现有一个比较牛逼的东西,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];
0 0
- jsonObject for IOS
- iOS上的jsonObject
- JsonObject
- jsonobject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JsonObject
- JSONObject
- JsonObject
- org.json.JSONObject报错No serializer found for class org.json.JSONObject
- The method fromObject(String) is undefined for the type JSONObject
- JAVA: WARN for JSONObject.toJSONString将空指针格式化成字符串“null”
- 080002 《小民说经济》读后感——用自己的思考写读后感
- mysql入门命令
- MySQL中涉及的几个字符集
- 黑马程序员- NSString和点圆的设计作业
- Struts2异常处理
- jsonObject for IOS
- Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法
- polyval polyvalm
- hadoop 集群安装
- 哈夫曼树以及哈夫曼编码的实现
- 21天学通Java学习笔记-Day10(网路编程)
- MVC,MVP,MVVM
- mysql增删改查语句
- 21天学通Java学习笔记-Day11(常用类)