user3251949
user3251949

Reputation: 41

Parse JSON data to label

 reponsedata = [[NSMutableData alloc]init];
    NSString *loc = [NSString stringWithFormat:@"http://advantixcrm.com/prj/mitech/index.php/api/appconfig/Mg"];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:loc]];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];

    if (reponsedata)
    {

        NSDictionary *Dictionarydetails = [NSJSONSerialization
                                           JSONObjectWithData:reponsedata
                                           options:kNilOptions
                                           error:nil];
        NSLog(@"The return data is: %@",Dictionarydetails);

        NSMutableDictionary *tempdict = [Dictionarydetails valueForKey:@"AppConfig"];
        array=[tempdict valueForKey:@"RestInfo"];

        NSLog(@"the result  are %@",array);
        NSLog(@"the result count is are %d",[array count]);


        NSDictionary *classDict  = [[NSDictionary alloc]init];

        for (int i=0; i<[array count]; i++) {
            //arr = [Class_location objectForKey:@"class_image"];
            classDict =[array objectAtIndex:i];
            // NSLog(@"the  dict Values are  are: %@",classDict);
            NSMutableArray  *dict1 =[[NSMutableArray alloc]init];
            dict1 =[classDict valueForKey:@"RestInfo"];
            NSLog(@"the result :%@",dict1);

            lb1.text =[classDict valueForKey:@"restaurant_location"];
            lbl2.text = [classDict valueForKey:@"restaurant_name"];
            lbl3.text = [classDict valueForKey:@"contact_name"];

        }
    }
}

the problem was I can't get those value to label well I got my response from server

Upvotes: 1

Views: 2850

Answers (4)

Anbu.Karthik
Anbu.Karthik

Reputation: 82759

//your answer for the script this code check the ans in console, i am waiting for your response


- (void)viewDidLoad
{
[super viewDidLoad];

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://advantixcrm.com/prj/mitech/index.php/api/appconfig/Mg"]];

[request setHTTPMethod:@"GET"];

[request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"];

NSError *err;
NSURLResponse *response;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

 NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];

NSArray *array=[jsonArray objectForKey:@"RestInfo"];

for (int i=0; i<[array count]; i++) {
    NSLog(@"the restrunt==%@",[[array objectAtIndex:i]objectForKey:@"restaurant_location"]);
    NSLog(@"the resname==%@",[[array objectAtIndex:i]objectForKey:@"restaurant_name"]);
    NSLog(@"the resname==%@",[[array objectAtIndex:i]objectForKey:@"contact_name"]);

}

}

Swift

override func viewDidLoad() {
 super.viewDidLoad()
 var request: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "http://advantixcrm.com/prj/mitech/index.php/api/appconfig/Mg")!)
 request.HTTPMethod = "GET"
request.setValue("application/json;charset=UTF-8", forHTTPHeaderField: "content-type")
NSError * err
NSURLResponse * response
var responseData: NSData = NSURLConnection.sendSynchronousRequest(request, returningResponse: response!, error: err!)
var jsonArray: [NSObject : AnyObject] = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingMutableContainers, error: err!)
var array: [AnyObject] = (jsonArray["RestInfo"] as! [AnyObject])
for var i = 0; i < array.count; i++ {
    NSLog("the restrunt==%@", (array[i]["restaurant_location"] as! String))
    NSLog("the resname==%@", (array[i]["restaurant_name"] as! String))
    NSLog("the resname==%@", (array[i]["contact_name"] as! String))
 }
}

Upvotes: 4

Prince Agrawal
Prince Agrawal

Reputation: 3607

Use This:

NSError *err= nil;
NSArray* arrayDetails= [NSJSONSerialization
                                   JSONObjectWithData:reponsedata
                                   options:kNilOptions
                                   error:&err];
[arrayDetails enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
    if([obj objectForKey:@"event_date"] isEqualTo:@"myDate")
    {
         lb1.text =[obj objectForKey:@"restaurant_location"];
            lbl2.text = [obj objectForKey:@"restaurant_name"];
            lbl3.text = [obj objectForKey:@"contact_name"];
    }

}];

Upvotes: 1

Amar
Amar

Reputation: 13222

If you look at your json response closely, you will find the following structure,

enter image description here

Dictionary -> RestInfo Array -> Required Dictionary

So your parser code should be as below,

NSDictionary *rootDictionary = [NSJSONSerialization JSONObjectWithData:reponsedata
                                                   options:kNilOptions
                                                   error:nil];

NSArray *restInfoArray = [rootDictionary valueForKey:@"RestInfo"];
for (NSDictionary *dict in rootDictionary) {
    lbl1.text = [dict valueForKey:@"restaurant_name"];
    lbl2.text = [dict valueForKey:@"restaurant_location"];
    lbl3.text = [dict valueForKey:@"contact_name"];
}

Please note that in case the RestInfo array returns multiple dictionaries, the lbl1, lbl2 and lbl3 will show text for the last dictionary keys. You need to have appropriate UI to handle such scenario.

Hope that helps!

Upvotes: 0

Retro
Retro

Reputation: 4005

    NSArray *arrayDetails = [NSJSONSerialization
                                   JSONObjectWithData:reponsedata
                                   options:kNilOptions
                                   error:nil];
    for(NSDictionary* dict in arrayDetails) {
     lb1.text  = dict[@"RestInfo"][@"restaurant_location"];
     lbl2.text = dict[@"RestInfo"][@"restaurant_name"];
     lbl3.text = dict[@"RestInfo"][@"contact_name"];
    }

This will do the needful I think

Upvotes: 0

Related Questions