How to get values from a dictionary in iOS
Solution 1
Using modern Objective-C, accessing things in arrays and dictionaries become easier.
You should use the following syntax:
id<NSObject> value = dictionary[@"key"];
Similarly,
id<NSObject> value = array[1]; // 1 is the index
Applying the above to the question:
NSString *error = json[@"error"];
NSDictionary *value = json[@"value"];
BOOL user = [json[@"value"][@"user"] boolValue];
As in the above line, nesting is allowed, but it is not a good practice.
Solution 2
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");
}
Solution 3
The dictionaries that normally returning from the server will be as a key value pair. if you are looking for accessing these values that corresponds to a key, then these code may help you
NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
Solution 4
For get error value from your JSON
Dictionary.
NSString *error = [myJSONDicName objectForKey:@"error"];
For get user value from your JSON
Dictionary.
NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];
EDITED:
You just need to change In your
if ([error isEqualToString:@"o"])
_^_
|
change 'o'
to '0'
Saba Sayed
Updated on July 05, 2022Comments
-
Saba Sayed almost 2 years
I am new to iOS. I created a login page and everything works fine. I used JSON for checking username and password and got the response from server in a dictionary format. I want to extract the values from the dictionary and check them in my program. The response which I get from the server is:
json: { error = 0; msg = ""; value = { user = false; }; };
First I want to check if the value with the key
error
is0
or1
. Then I want to check the value with the keyuser
. I don't know how I should code to check it. Can anyone help?The code which I tried is below:
- (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"); } }