Search code examples
iosobjective-cjsonparsingnsarray

How to extract JSON array?


How to extract JSON data dictionary. I trying to many times but cant extract particular value. I get only first "business_category_name" but "business_details" under value "name" cant fetch. how it possible please help.

Thank you

My JSON Data

{
 "status": [
{
  "business_category_name": "Banks\/Credit Unions\/Landers",
  "business_details": [
    {
      "img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
      "name": "PNC Bank",
      "des": "PNC offers a wide range of services for all our customers, from individuals and small businesses, to corporations and government entities",
      "address": "",
      "email": "andrea.kendall@pnc.com",
      "phone": "260-422-5922",
      "member_since": "2016-05-31",
      "img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
      "website": "",
      "city": "Fort Wayne",
      "state": "IN",
      "zip": "46808"
    }
  ]
},
{
  "business_category_name": "Cleaning Services",
  "business_details": [
    {
      "img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/uploads\/logo250.png",
      "name": "tsst company",
      "des": "rudurgg ",
      "address": "2005 s calhoun ",
      "email": "",
      "phone": "2602496687",
      "member_since": "2016-05-31",
      "img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/uploads\/logo250.png",
      "website": "",
      "city": "fort wayne",
      "state": "in",
      "zip": "46825"
    }
  ]
}
 ]
 }

MY code

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURLRequest *req=[[NSURLRequest alloc]initWithURL:[NSURL  URLWithString:@"my url"]];
    response =[[NSMutableData alloc]init];
    [NSURLConnection connectionWithRequest:req delegate:self];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
     NSError *error;
     NSLog(@"Error in receiving data %@",error);
     NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves  error:&error];
     NSLog(@"response data %@",json);
     NSArray *items = [json objectForKey:@"status"];
     pass = [items valueForKey:@"business_category_name"];
     NSLog(@"get category %@",pass);
}

Solution

  • If you want to fetch only one dictionary from array try this

    NSArray *statuses = [json objectForKey:@"status"];
    
    for(NSDictionary *status in statuses){
       NSString *bussiness_category=[status valueForKey:@"business_category_name"];
    
       NSString *name=[[[status objectForKey:@"business_details"] firstObject] valueForKey:@"name"];
    
    }
    

    If you want to fetch all try this.

    Create a mutable array and add all the name inside it and load into tableview like below

    NSMutableArray *names = [NSMutableArray new];
    
    NSArray *statuses = [json objectForKey:@"status"];
    
    for(NSDictionary *status in statuses){
       NSString *bussiness_category=[status valueForKey:@"business_category_name"];
    
       for(NSDictionary *details in [status objectForKey:@"business_details"]){
             NSString *name=[details valueForKey:@"name"];
             [names addObject:name];
       }
    
    }
    

    Hope it helps.