A.Kumawat
A.Kumawat

Reputation: 103

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": "[email protected]",
      "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);
}

Upvotes: 0

Views: 125

Answers (3)

kunal
kunal

Reputation: 21

here dataFromApi is string JSON format;

NSData *objectData = [dataFromApi dataUsingEncoding:NSUTF8StringEncoding];
id collection = [NSJSONSerialization JSONObjectWithData:objectData options:0 error:&error];

after receiving collection you can find data using key value pair.

ex = string add = collection[@"name"];

Upvotes: 0

iphonic
iphonic

Reputation: 12719

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.

Upvotes: 0

Ketan Parmar
Ketan Parmar

Reputation: 27438

You can do something like,

NSArray *items = [json objectForKey:@"status"];

NSDictionary *firstObjOfItems = [items objectAtIndex:0];

NSString *business_category_name = [firstObjOfItems valueForKey:@"business_category_name"];

NSArray *business_details_Array = [firstObjOfItems objectForKey:@"business_details"];

NSDictionary *first_Object_of_business_details = [business_details_Array objectAtIndex:0]
;

NSString *name = [first_Object_of_business_details valueForKey:@"name"];
NSLog(@"name : %@",name);

You can fetch other parameters likewise. You should use for loop to go through every object. It is just example that how to reach at end element in your json data.

Hope this will help :)

Upvotes: 1

Related Questions