我从服务器收到的响应格式如下:
{
"Data":{
"Key": "Value"
...
},
"Key": "Value"
...
}
但是,我只对“数据”下的元素感兴趣。 这是我目前正在使用的代码:
SBJsonParser *parser = [SBJsonParser new];
NSString *responseString = [request responseString];
NSDictionary *responseData = [parser objectWithString:responseString];
NSString *infoString = [responseData objectForKey:@"Data"];
NSDictionary *infoData = [parser objectWithString:infoString];
有没有办法在没有明确声明5个对象的情况下执行相同的操作?只是寻找一些我应该使用的短手感。
答案 0 :(得分:1)
你的最后两行是错误的 - "Data"
实际上是NSDictionary
,所以你不需要再解析它。
此外,大多数Objective-C程序员会在他们知道返回是安全的情况下嵌套调用 - 我的意思是不需要额外的检查。例如,这会让我看到更自然的实现:
NSDictionary *responseDictionary = [[request responseString] JSONValue];
NSDictionary *infoData = [responseDictionary objectForKey:@"Data"];
请注意,我使用JSONValue
附带的NSObject类别中的便捷方法SBJSON
。