ios Json获取数据 的同步get请求和异步get请求方法
json的解析方法有4种 此处使用的是使用IOS自带解析类NSJSONSerialization方法解析:(无需导入包,低于IOS5版本IOS不支持)
//加载一个NSURL对象 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://smartbox.gtimg.cn/s3/?q=600&t=all"]]; //将请求的url数据放到NSData对象中 NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];把得到的数据再进行处理,这是同步的get请求
同步请求时如果请求到url连接不到或者网速不好等会导致获取不到数据
异步请求需要实现<NSURLConnectionDelegate>代理
-(void)data_json //数据解析 { NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://smartbox.gtimg.cn/s3/?q=600&t=all"]]; NSURLConnection *respose = [[NSURLConnection alloc]initWithRequest:request delegate:self]; } //异步请求代理方法 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { self.receiveData = [NSMutableData data];//接收数据,数据不是一下全接收到的所以是可变的data } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //拼接接收到的数据 [self.receiveData appendData:data]; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { //解析 m_arr_all_stock_codes = [[NSMutableArray alloc]initWithCapacity:0]; getData = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding]; }
unicode转化成utf8的方法
- (NSString*) replaceUnicode:(NSString*)aUnicodeString //unicode转化成utf8的方法 { NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding]; NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL]; return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"]; }