SBJsonParser问题

时间:2011-10-01 22:45:44

标签: iphone objective-c json nsarray nsdictionary

我的iPhone应用程序正在从我的Web服务接收这个json字符串:

{"res":true,"users":[{"id":"79","username":""},{"id":"81","username":""},{"id":"83","username":""},{"id":"80","username":""},{"id":"82","username":""}]}

我正在使用以下代码处理它:

SBJsonParser *jsonParser = [[SBJsonParser alloc] init];
NSError *error = nil;

NSDictionary *dictionary = [jsonParser objectWithString:responseString error:&error];

其中responseString是使用JSON收到的字符串。

现在如果我检查[[dictionary valueForKey:@"res"] boolValue]它是正确的布尔值。 问题出在[dictionary objectForKey:@"users"]我不明白它是什么类型的对象。

我也试着用这个:

NSLog(@"Is of type NSString?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSString class]])? @"Yes" : @"No");
NSLog(@"Is of type NSArray?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSArray class]])? @"Yes" : @"No");
NSLog(@"Is of type NSMutableArray?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSMutableArray class]])? @"Yes" : @"No");
NSLog(@"Is of type NSDictionary?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSDictionary class]])? @"Yes" : @"No");
NSLog(@"Is of type NSMutableDictionary?: %@", ([[dictionary objectForKey:@"users"] isMemberOfClass:[NSMutableDictionary class]])? @"Yes" : @"No");

但总是说No

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您应该使用isKindOfClass:而不是isMemberOfClass:,因为集合通常在Cocoa中实现为类集群。

此外,NSLog(@"%@", NSStringFromClass([[dictionary objectForKey:@"users"] class]))写入比单独检查每个可能的类要短得多。