IOS JSON的简要说明

来源:互联网 发布:1688卖家数据分析插件 编辑:程序博客网 时间:2024/05/16 23:24

JSONKit是Object-C一个处理json数据的库,非常高效而且易用,对比同类型的库有非常明显的性能优势,见下图:


JSON和Object-C中数据类型的映射关系如下表所示

JSONObjective-CnullNSNulltrue and falseNSNumberNumberNSNumberStringNSStringArrayNSArrayObjectNSDictionary

下面写一个简单的程序使用一下JSONKit(只需下载头文件以及源文件,放在项目目录下

[cpp] view plaincopy
  1. #import <Foundation/Foundation.h>  
  2. #import "lib/JSONKit.h"  
  3.   
  4. int main (int argc, const char * argv[]) {  
  5.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
  6.   
  7.     NSString *res = nil;  
  8.       
  9.     /* 
  10.      * json格式编码 
  11.      */  
  12.       
  13.     //字符串  
  14.     NSString *str = @"this is a nsstring";  
  15.     res = [str JSONString];  
  16.     NSLog(@"res= %@", [NSString stringWithString: res]);  
  17.     //res= "this is a nsstring"  
  18.       
  19.   
  20.     //数组  
  21.     NSArray *arr = [[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",nil];  
  22.     res = [arr JSONString];  
  23.     NSLog(@"res= %@", [NSString stringWithString: res]);  
  24.     [arr release];  
  25.     //res= ["One","Two","Three"]  
  26.       
  27.   
  28.     //字典类型(对象)  
  29.     NSArray *arr1 = [NSArray arrayWithObjects:@"dog",@"cat",nil];  
  30.     NSArray *arr2 = [NSArray arrayWithObjects:[NSNumber numberWithBool:YES],[NSNumber numberWithInt:30],nil];  
  31.     NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:arr1,@"pets",arr2,@"other",nil];  
  32.     res = [dic JSONString];  
  33.     NSLog(@"res= %@", [NSString stringWithString: res]);  
  34.     //res= {"pets":["dog","cat"],"other":[true,30]}   
  35.       
  36.       
  37.     /* 
  38.      * json格式解码 
  39.      */  
  40.     JSONDecoder *jd=[[JSONDecoder alloc] init];  
  41.       
  42.     //针对NSData数据  
  43.     NSData *data = [dic JSONData];  
  44.     NSDictionary *ret = [jd objectWithData: data];  
  45.     NSLog(@"res= %@", [ret objectForKey:@"pets"]);  
  46.     //res= (  
  47.     //  dog,  
  48.     //  cat  
  49.     //)  
  50.     NSLog(@"res= %@", [[ret objectForKey:@"other"] objectAtIndex:0]);  
  51.     //res= 1  
  52.       
  53.     //针对NSString字符串数据  
  54.     NSString *nstr = [dic JSONString];  
  55.     NSDictionary *ret2 = [jd objectWithUTF8String:(const unsigned char *)[nstr UTF8String] length:(unsigned int)[nstr length]];  
  56.     NSLog(@"res= %d", [[ret2 objectForKey:@"pets"] indexOfObject:@"cat"]);  
  57.     //res= 1  
  58.     NSLog(@"res= %@", [[ret2 objectForKey:@"other"] objectAtIndex:1]);  
  59.     //res= 30  
  60.       
  61.     [jd release];  
  62.       
  63.     [pool drain];  
  64.     return 0;  
  65. }  

JSONKit的接口中还可以自行定制序列化和反序列化选项,针对如何提升效率作者也是给了很多使用的建议,例如尽量使用NSData来替换NSString类型,因为JSON数据通常是用来通信使用,而通信过程使用NSData类型更为高效,毕竟是二进制流数据更短,所以没必要转成NSString多此一举了。不知道我理解得对不对。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁宝宝害羞胆小怎么办 2岁宝宝害羞胆小怎么办 6个月的宝宝胆小怎么办 3岁半宝宝很胆小怎么办 分手了想他了怎么办 分手了还想联系怎么办 2岁多宝宝不长肉怎么办 2个月宝宝尿裤子怎么办 四岁宝宝脾气大怎么办 两周宝宝换奶粉怎么办 两周半宝宝不喝奶粉怎么办 2岁半宝宝太调皮怎么办 2岁宝宝晚上睡觉晚怎么办 三周岁半宝宝入园后不合群怎么办 数学懒于思考的孩子怎么办 2岁宝宝爱哭不讲道理怎么办 孩子不讲道理一直哭怎么办 白天不烧晚上烧怎么办 两岁宝宝出虚汗怎么办 两岁宝宝出水痘怎么办 两岁宝宝爱看手机怎么办 两岁宝宝太好动怎么办 五岁宝宝不会数数怎么办 四岁宝宝算数不好怎么办 两个月宝宝体内有火怎么办 两个月宝宝有火怎么办 2岁宝宝起眼屎怎么办 一周岁的宝宝皮肤过敏怎么办 两岁宝宝脾气倔不听话怎么办 22个月宝宝打人怎么办 两岁宝宝会打人怎么办 3岁哭闹倔强不止怎么办 我儿子二十三岁不爱说话怎么办 2岁宝宝不听话脾气大怎么办 2岁宝宝调皮不听话怎么办 2岁的宝宝不听话怎么办 2岁宝宝总是不听话怎么办 2岁宝宝淘气不听话怎么办 两岁宝宝不听大人的话怎么办? 来月经奶量减少怎么办 月经来了奶少怎么办