<HTTP>利用第三方包SBJson来进行IOS下的Json解析

  Json格式化校验网站:http://www.bejson.com/

  这个网站可以可视化的展示Jason内容,校验Json中的错误。

  解析Json有四种方式:touchJson、SBJson、JSonKit和系统解析方法。

  下面主要介绍SBJson解析Json的方法:

  首先在Build Phases中需要导入库文件:libxml2.dylib。

  然后导入第三方包GDataXMLNode.h和GDataXMLNode.m文件

  新建程序,利用NSConnection方法或者ASIHTTPRequest方法下载XML文件,下面以ASIHTTPRequest方法为例,在ASIHTTPRequestDelegate协议方法中进行XML文件解析。

-(void)requestFinished:(ASIHTTPRequest *)request
 1 -(void)requestFinished:(ASIHTTPRequest *)request
 2 {
 3     [mData setLength:0];
 4     [mData appendData:[request responseData]];
 5     //用字典来接受下载的Json数据
 6     NSDictionary *dict = [mData JSONValue];
 7     //得到entry标签内的所有内容,放入数组中
 8     NSArray *array = [dict objectForKey:@"entry"];
 9     mArray = [[NSMutableArray alloc] initWithCapacity:20];
10     //遍历得到的数组,此处解析的关键是理清出内部的字典和数组的层级关系,而且其中的数组不能使用index来取得元素,必须进行遍历
11     for (NSDictionary *dic in array) {
12         InfoItem *item = [[InfoItem alloc] init];
13         //读出标题
14         NSDictionary *title_dic = [dic objectForKey:@"title"];
15         NSString *title = [title_dic objectForKey:@"$t"];
16         //赋给模板类
17         item.title = title;
18         //读作者
19         NSMutableString *auther_name = [[[NSMutableString alloc] init] autorelease];
20         NSArray *arr_au = [dic objectForKey:@"author"];
21         for (NSDictionary *dic_au in arr_au) {
22             NSDictionary *au_name = [dic_au objectForKey:@"name"];
23             [auther_name appendString:[au_name objectForKey:@"$t"]];
24         }
25         //赋给模板类
26         item.author = auther_name;
27         //读图片
28         NSString *str_pic;
29         NSArray *arr_pic = [dic objectForKey:@"link"];
30         for (NSDictionary *dic_pic in arr_pic) {
31             if ([[dic_pic objectForKey:@"@rel"] isEqualToString:@"image"]) {
32                 str_pic = [dic_pic objectForKey:@"@href"];
33             } }
34         //赋给模板类
35         item.pic = str_pic;
36         [mArray addObject:item];
37     }
38 }

 

posted @ 2012-11-08 15:29  白条围巾  阅读(1251)  评论(0编辑  收藏  举报