2013-02-27 6 views
0

Je veux analyser les données JSON reçues du serveur avec le Cadre AFNetworking dans iOS 5:Parsing JSON dans iOS 5 avec AFNetworking

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
} failure:nil]; 

Les données JSON Je veux analyser ressemble à ceci:

[ { 
    addressReal = "\U6912\U6c5f\U89e3\U653e\U5357\U8def295\U53f7"; 
    areaTotal = 774; 
    balance = 0; 
    businessIncome = "556.49"; 
    equNoString = ""; 
    equStatusSting = ""; 
    id = 208; 
    staff = 10; 

}, 
    { 
    addressReal = "\U53f0\U5dde\U5e02\U5e9c\U5927\U9053668\U53f7"; 
    areaTotal = 156; 
    balance = 6463; 
    businessIncome = "174.93"; 
    equStatusSting = ""; 
    id = 209; 
    staff = 8; 

}] 

Comment puis-je maintenant accéder au JSON?

+0

J'ai essayé de nettoyer votre question et de le rendre réellement responsable, mais je recommande pour des questions futures que vous essayez de vous assurer que vous déclarez toujours clairement le problème c'est que vous avez besoin d'aide. Voir aussi [Comment poser des questions à la Smart Way] (http://catb.org/esr/faqs/smart-questions.html) (en particulier: * Soyez précis et informatif sur votre problème *) – unthought

Répondre

0

C'est ce que je l'utilise, me sens libre pour l'adapter à vos besoins:

-(void) loginWithUserID:(NSString*)usrID User:(NSString*)usr Password:(NSString *)psw Sender:(id)sender 
{ 
    if ([sender respondsToSelector:@selector(startLoading)]){ 
     [sender performSelector:@selector(startLoading)]; 
    } 

    baseURL = [NSString stringWithFormat: 
        @"http://xxx.xxx.xxx.xxx/test/service.svc/weblogin"]; 
    NSString* serviceURL = [NSString stringWithFormat: 
          @"%@?userID=%@&user=%@&password=%@",baseURL,usrID,usr,psw; 

    NSURL *url = [NSURL URLWithString:[serviceURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
     self.LoginOK = [JSON valueForKeyPath:@"LoginOK"]; 
     if (LoginOK.intValue == 1) { 
      NSDictionary *usrData = [JSON valueForKeyPath:@"userData"]; 
      userData = [[UserData alloc]init]; 
      [userData readFromJSONDictionary:usrData]; 
      NSLog(@"Userdata: %@",userData); 
      if ([sender respondsToSelector:@selector(loginSuccessful:)]) 
      { 
       [sender performSelector:@selector(loginSuccessful:)]; 
      } 
     }else{ 
      UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"No Correct Login Credentials" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
      [alertView show]; 
      ;} 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
     if ([sender respondsToSelector:@selector(stopLoading)]){ 
      [sender performSelector:@selector(stopLoading)]; 
     } 
     [[[UIAlertView alloc] initWithTitle:@"Error" 
            message:@"Loginservice not available! Check your connection!" 
            delegate:nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles: nil] show]; 
     NSLog(@"Error: %@", error); 

    }]; 

    [operation start]; 
    }; 

et utiliser une méthode

-(void)readFromJSONDictionary:(NSDictionary *)d 
{ 

    [self setProperty1:[d objectForKey:@"property1"]]; 
} 

pour obtenir toutes les propriétés de ce dictionnaire dans une classe personnalisée .

Donc, dans votre cas, il serait en utilisant

NSDictionary *data = [JSON valueForKeyPath:@"data"]; 
+0

[josn allobjects]; – user1694024

+0

Eh bien, ouais c'était un exemple dans le cas où le JSON est venu dans un conteneur appelé données. Si cette réponse vous a aidé et que vous pensez que c'est la réponse à votre question, auriez-vous l'amabilité d'appuyer sur la coche? Si cela n'a pas répondu à votre question, ou si vous avez besoin de plus de précisions, n'hésitez pas à le dire! –