我是 iOS 的新手。我创建了一个登录页面,一切正常。我使用 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");
}
}
答案 0 :(得分:15)
使用现代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];
如上所述,允许嵌套,但这不是一个好习惯。
答案 1 :(得分:3)
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");
}
答案 2 :(得分:2)
通常从服务器返回的字典将作为键值对。如果您正在寻找访问与键对应的这些值,那么这些代码可以帮助您
NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
答案 3 :(得分:1)
从JSON
字典中获取错误值。
NSString *error = [myJSONDicName objectForKey:@"error"];
从JSON
字典中获取用户值。
NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];
<强>编辑:强>
你只需要改变你的
if ([error isEqualToString:@"o"])
_^_
|
将'o'
更改为'0'
答案 4 :(得分: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];
}