利用第三方包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 }

 

你可能感兴趣的:(json解析)