0

我从服务器收到的响应格式如下:

{
    "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 个对象的情况下执行相同的操作?只是寻找一些我应该使用的速记感。

4

1 回答 1

1

你的最后两行是错误的 -"Data"实际上是 a NSDictionary,所以你不需要双重解析它。

此外,大多数 Objective-C 程序员会在他们知道返回安全的地方嵌套调用——我的意思是不需要额外的检查。例如,这对我来说会是一个更自然的实现:

NSDictionary *responseDictionary = [[request responseString] JSONValue];
NSDictionary *infoData = [responseDictionary objectForKey:@"Data"];

请注意,我使用的是JSONValueNSObject 附带的类别中的便捷方法SBJSON

于 2011-10-11T06:48:16.653 回答