ios json 同步请求和异步请求

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"];
    
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值