JSON 解析相关 知识

来源:互联网 发布:巫师2优化 编辑:程序博客网 时间:2024/05/18 01:35

Eg 1 : 从本地文件中读取json数据,然后读取到缓冲区。


- (void)jsonParse{       //初始化文件路径。    NSString* path  = [[NSBundle mainBundle] pathForResource:@"nanjing" ofType:@"txt"];   //将文件内容读取到字符串中,注意编码NSUTF8StringEncoding 防止乱码,    NSString* jsonString = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];   //将字符串写到缓冲区。    NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];    //解析json数据,使用系统方法 JSONObjectWithData:  options: error:    NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];    //接下来一步一步解析。知道得到你想要的东西。    NSArray* arrayResult =[dic objectForKey:@"results"];     NSDictionary* resultDic = [arrayResult objectAtIndex:0];    NSDictionary* geometryDic = [resultDic objectForKey:@"geometry"];    NSLog(@"geometryDic: %@,  resultDic:%@",geometryDic,resultDic);    NSDictionary* locationDic = [geometryDic objectForKey:@"location"];    NSNumber* lat = [locationDic objectForKey:@"lat"];    NSNumber* lng = [locationDic objectForKey:@"lng"];    NSLog(@"lat = %@, lng = %@",lat,lng);    [jsonString release];        }

Eg 2 :使用网络路径来解析json,

- (void)jsonParse{       //初始化网络路径。    NSString* path  = @"http://maps.googleapis.com/maps/api/geocode/json?address=nanjing&sensor=true";    //初始化 url     NSURL* url = [NSURL URLWithString:path];   //将文件内容读取到字符串中,注意编码NSUTF8StringEncoding 防止乱码,    NSString* jsonString = [[NSString alloc]initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];   //将字符串写到缓冲区。    NSData* jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];    //解析json数据,使用系统方法 JSONObjectWithData:  options: error:    NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];        //一下为自定义解析, 自己想怎么干就怎么干        NSArray* arrayResult =[dic objectForKey:@"results"];     NSDictionary* resultDic = [arrayResult objectAtIndex:0];    NSDictionary* geometryDic = [resultDic objectForKey:@"geometry"];    NSLog(@"geometryDic: %@,  resultDic:%@",geometryDic,resultDic);    NSDictionary* locationDic = [geometryDic objectForKey:@"location"];    NSNumber* lat = [locationDic objectForKey:@"lat"];    NSNumber* lng = [locationDic objectForKey:@"lng"];    NSLog(@"lat = %@, lng = %@",lat,lng);    [jsonString release];        }

Eg 3 :使用网络路径来解析json 。 使用NSURLRequest 和NSURLConnection 请求网络数据。

- (void)jsonParse{       //初始化网络路径。    NSString* path  = @"http://maps.googleapis.com/maps/api/geocode/json?address=nanjing&sensor=true";    //初始化 url     NSURL* url = [NSURL URLWithString:path];    NSURLRequest* request = [NSURLRequest requestWithURL:url];    //将请求到的字符串写到缓冲区。    NSData* jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    //解析json数据,使用系统方法 JSONObjectWithData:  options: error:    NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];        //一下为自定义解析, 自己想怎么干就怎么干        NSArray* arrayResult =[dic objectForKey:@"results"];     NSDictionary* resultDic = [arrayResult objectAtIndex:0];    NSDictionary* geometryDic = [resultDic objectForKey:@"geometry"];    NSLog(@"geometryDic: %@,  resultDic:%@",geometryDic,resultDic);    NSDictionary* locationDic = [geometryDic objectForKey:@"location"];    NSNumber* lat = [locationDic objectForKey:@"lat"];    NSNumber* lng = [locationDic objectForKey:@"lng"];    NSLog(@"lat = %@, lng = %@",lat,lng);        }

0 0
原创粉丝点击