ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。详情见这里。既然apple为我们提供了这么良好的工具,我们没理由不用吧。 NSJSONSerialization提供了将JSON数据转换为Foundation对象(一般都是NSDictionary和NSArray)和Foundation对象转换为JSON数据(可以通过调用isValidJSONObject来判断Foundation对象是否可以转换为JSON数据)。
下面提供一个从豆瓣电台下载的json数据转换的代码
- ViewCode
-
- #definekGlobalQueuedispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
- #definekDoubanUrl@"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79"
- -(void)loadJsonData:(NSURL*)url
- {
- dispatch_async(kGlobalQueue,^{
- NSData*data=[NSDatadataWithContentsOfURL:url];
- [selfperformSelectorOnMainThread:@selector(parseJsonData:)withObject:datawaitUntilDone:NO];
- });
- }
- -(void)parseJsonData:(NSData*)data
- {
- NSError*error;
- NSDictionary*json=[NSJSONSerializationJSONObjectWithData:dataoptions:kNilOptionserror:&error];
- if(json==nil){
- NSLog(@"jsonparsefailedrn");
- return;
- NSArray*songArray=[jsonobjectForKey:@"song"];
- NSLog(@"songcollection:%@rn",songArray);
-
- _song=songArray;
- self.songIndex=0;
- NSDictionary*song=[songArrayobjectAtIndex:0];
- NSLog(@"songinfo:%@tn",song);
- }
Foundation对象转换为js
- ViewCode
-
- NSDictionary*song=[NSDictionarydictionaryWithObjectsAndKeys:@"icanfly",@"title",@"4012",@"length",@"Tom",@"Singer",nil];
- if([NSJSONSerializationisValidJSONObject:song])
- {
- NSError*error;
- NSData*jsonData=[NSJSONSerializationdataWithJSONObject:songoptions:NSJSONWritingPrettyPrintederror:&error];
- NSString*json=[[NSStringalloc]initWithData:jsonDataencoding:NSUTF8StringEncoding];
- NSLog(@"jsondata:%@",json);
- }
on数据
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|