2012-10-10 67 views
0

这是我从Web服务的Json响应,我无法解析它。 我想要做的是在tableview中加载数据以下的数据,例如。 3.7作为段头和行中的其他值。我该怎么做??我想使用内置的API没有第三方框架。解析JSON for UITableView iOS

任何帮助,非常感谢。

{"Links":{"3.7":[{"fld_app_download_id":"7111","fld_app_version_id":"1928","fld_date_added":"2012-10-04 08:40:38","fld_cracker":"vend3tta101","fld_download_link":"fiberupload.com","fld_url":"http:\/\/fiberupload.com\/pwzmodjshwhr\/1Password_Pro_(v3.7_v370009_Univ_os31)-vend3tta101.ipa","fld_status":"1"},{"fld_app_download_id":"7112","fld_app_version_id":"1928","fld_date_added":"2012-10-04 08:40:38","fld_cracker":"vend3tta101","fld_download_link":"depositfiles.com","fld_url":"http:\/\/depositfiles.com\/files\/eyhcw06b6","fld_status":"1"},{"fld_app_download_id":"7113","fld_app_version_id":"1928","fld_date_added":"2012-10-04 08:40:38","fld_cracker":"vend3tta101","fld_download_link":"turbobit.net","fld_url":"http:\/\/turbobit.net\/vyc5jkr5s51k.html","fld_status":"1"}]}} 

回答

0

在一个简单的方法,看看代码波纹管:

#import "YourViewController.h" 

@interface NSDictionary(JSONCategories) 
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress; 
-(NSData*)toJSON; 
@end 
@implementation NSDictionary(JSONCategories) 
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString*)urlAddress{ 
NSData* data = [NSData dataWithContentsOfURL: [NSURL URLWithString: urlAddress] ]; 
__autoreleasing NSError* error = nil; 
id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
if (error != nil) return nil; 
return result; 
} 
-(NSData*)toJSON{ 
NSError* error = nil; 
id result = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:&error]; 
if (error != nil) return nil; 
return result;  
} 
@end 

@implementation YourViewController 

-(IBAction)downloadData:(id)sender{ 

    NSString *yourResponseLink = @"YOUR RESPONSE LINK"; 
    NSURL *urlString = [NSURL URLWithString:urlWroteString]; 
    NSData* data = [NSData dataWithContentsOfURL:urlString]; 
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:NO]; 

} 

-(void)fetchedData:(NSData *)responseData { 

    NSError* error; 

    if (responseData == nil) { 

     NSLog(@"NO DATA HAS BEEN FETCHED,ERROR = %@",error); 

    }else{ 

     NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 
     NSArray *yourResponseArray = [json objectForKey:@"YOUR RESPONSE KEY"]; 

     NSLog("YOU RESPONSE IS = %@",yourResponseArray); 

    } 

} 


@end 

要从响应显示的数据,请注意您的数据是存储在一个NSArray的,所以在你的的cellForRowAtIndexPath,使用以下方法:

-(UITableViewCell *)tableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    //initialize your cells normally and to display the data from your response use 
    NSDictionary *yourSpecificData = [yourResponseArray objectAtIndex:[indexPath row]]; 

    //and finally display some text in the cell 
    cell.textLabel.text = [yourSpecificData objectForKey:@"SOME KEY FROM RESPONSE"]; 

} 
0

你看过NSJSONSerialization类吗?它处理JSON和属性列表之间的转换。

+0

是的,我可以得到的数据,但现在,我不能得到如何使用3.7作为节头。 – malhaar

0

您可以在ios5中使用“NSJsonSerialization” 查看代码

-(void) parseJsonData:(NSData *)data 
{ 
    NSError *error; 
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
    if (json == nil) { 
     NSLog(@"json parse failed \r\n"); 
     return; 
    } 
    NSArray *songArray = [json objectForKey:@"song"]; 
    NSLog(@"song collection: %@\r\n",songArray); 

    _song = songArray; 
    self.songIndex = 0; 
    NSDictionary *song = [songArray objectAtIndex:0]; 
    NSLog(@"song info: %@\t\n",song); 

}