Je suis nouveau sur iOS . J'ai créé une page de connexion et tout fonctionne bien. J'ai utiliséJSONpour vérifier le nom d'utilisateur et le mot de passe et j'ai reçu la réponse du serveur au format dictionary . Je veux extraire les valeurs du dictionary et les vérifier dans mon programme . La réponse que je reçois du serveur est la suivante:
json: {
error = 0;
msg = "";
value = {
user = false;
};
};
Je veux d’abord vérifier si la valeur avec la cléerror
est0
ou1
. Ensuite, je veux vérifier la valeur avec la cléuser
. Je ne sais pas comment coder pour le vérifier. Quelqu'un peut-il aider?
Le code que j'ai essayé est ci-dessous:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *respString = [[NSString alloc] initWithData:loginJSONData encoding:NSUTF8StringEncoding];
SBJsonParser *objSBJSONParser = [[SBJsonParser alloc] init];
NSDictionary *json = [[NSDictionary alloc] initWithDictionary:[objSBJsonParser objectWithString:respString]];
NSLog(@"json: %@",json);
NSString *error = [json objectForKey:@"error"];
NSLog(@"error: %@", error);
if ([error isEqualToString:@"o"])
{
NSLog(@"login successful");
}
else
{
NSLog(@"login fail");
}
}
En utilisant Objective-C moderne, accéder aux éléments des tableaux et des dictionnaires devient plus facile.
Vous devez utiliser la syntaxe suivante:
id<NSObject> value = dictionary[@"key"];
De même,
id<NSObject> value = array[1]; // 1 is the index
Appliquer ce qui précède à la question:
NSString *error = json[@"error"];
NSDictionary *value = json[@"value"];
BOOL user = [json[@"value"][@"user"] boolValue];
Comme dans la ligne ci-dessus, l'imbrication est autorisée, mais ce n'est pas une bonne pratique.
NSNumber *error = [json objectForKey:@"error"];
if ([error intValue] == 0)
{
NSLog(@"login successful");
NSDictionary *value = [json objectForKey:@"value"];
NSNumber *user = [value objectForKey:@"user"];
if ([user boolValue])
{
NSLog(@"user == true");
}
else
{
NSLog(@"user == false");
}
}
else
{
NSLog(@"login failed");
}
Les dictionnaires qui reviennent normalement du serveur constitueront une paire de valeurs de clé. si vous souhaitez accéder à ces valeurs qui correspondent à une clé, ces codes peuvent vous aider.
NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
Pour obtenir la valeur error de votre dictionnaire JSON
.
NSString *error = [myJSONDicName objectForKey:@"error"];
Pour obtenir la valeur user de votre dictionnaire JSON
.
NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];
EDITED:
Vous avez juste besoin de changer dans votre
if ([error isEqualToString:@"o"])
_^_
|
remplacez 'o'
par '0'
Vous pouvez utiliser le code ci-dessous
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *respstring = [[NSString alloc]initWithData:loginJsonData encoding:NSUTF8StringEncoding];
NSDictionary *dic = [responseString JSONValue];
NSLog(@"%@",dic);
NSNumber *error = [dic objectForKey:@"error"];
if([error intValue] == 0) {
NSLog(@"login successful");
}
else
{
NSLog(@"login fail");
}
NSString *user = [value objectForKey:@"user"];
BOOL userStatus = [user boolValue];
}