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 }