parsingJSON数据标签

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

问题是我无法得到这些价值标签,我得到了我的服务器响应

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

迅速

 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)) } } 

用这个:

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

这将做我需要的想法

如果你仔细看看你的json响应,你会发现以下结构,

在这里输入图像说明

Dictionary – > RestInfo Array – >必填字典

所以你的parsing器代码应该如下,

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

请注意,如果RestInfo数组返回多个字典,则lbl2lbl2lbl3将显示最后一个字典键的文本。 你需要有适当的用户界面来处理这种情况。

希望有所帮助!