如何从iOS中的字典获取值
我是iOS新手。 我创build了一个login页面,一切正常。 我使用JSON来检查用户名和密码,并以字典格式从服务器获得响应。 我想提取字典中的值,并在我的程序中检查它们。 我从服务器得到的回应是:
json: { error = 0; msg = ""; value = { user = false; }; };
首先,我想检查关键error
的值是0
还是1
。 然后我想检查关键user
的价值。 我不知道如何编码来检查它。 谁能帮忙?
我试过的代码如下:
- (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"); } }
使用现代的Objective-C,访问数组和字典中的东西变得更容易。
您应该使用以下语法:
id<NSObject> value = dictionary[@"key"];
同样的,
id<NSObject> value = array[1]; // 1 is the index
应用以上问题:
NSString *error = json[@"error"];
NSDictionary *value = json[@"value"];
BOOL user = [json[@"value"][@"user"] boolValue];
正如在上面的行,嵌套是允许的,但这不是一个好的做法。
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"); }
通常从服务器返回的字典将作为关键值对。 如果您正在寻找访问这些对应于某个键的值,那么这些代码可能会对您有所帮助
NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
从JSON
字典中获取错误值。
NSString *error = [myJSONDicName objectForKey:@"error"];
为了从您的JSON
字典中获取用户值。
NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];
编辑:
你只需要改变你的
if ([error isEqualToString:@"o"]) _^_ |
将'o'
更改为'0'
你可以使用下面的代码
-(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]; }