0

我一直在尝试使用 NSJSONSerialization 来让 Twitter 搜索工作以解析查询结果。我最初使用了一个关于使用 SLRequest 访问 Twitter 数据的教程,但我发现在这样做时我需要结果来更新属性以保存它们。我希望获取是一个类方法,所以我避免使用属性。我遇到的问题有点奇怪,我不确定为什么会发生。基本上我可以使用 [NSJSONSerialization JSONObjectWithData: ...] 可靠地获取 - 除了字典中的一个键:值对,结果。键“results”的值返回为 ( ),类型为 __NSArrayM。我可以看到我发送来获取数据的 URL 是正确的,并且解析字典中的其余信息是正确的。一世'

这是一个示例 GET 请求: https ://search.twitter.com/search.json?q=tech%20filter%3Alinks%20lang%3Aen&src=typd&rpp=1&include_entities=true

如果你去那个页面,你可以看到“results”键有一个与之关联的值,它应该是一个数组。不过,在我的解析版本中,我有一个空数组:

fetchResults = {
"completed_in" = "0.045";
"max_id" = 309208532929101825;
"max_id_str" = 309208532929101825;
page = 1;
query = "tech%2520filter%253Alinks%2520lang%253Aen";
"refresh_url" = "?since_id=309208532929101825&q=tech%2520filter%253Alinks%2520lang%253Aen&include_entities=1";
results = (
);
"results_per_page" = 1;
"since_id" = 0;
"since_id_str" = 0;
}

发生这种情况是否有原因?我已经为下面的 JSON 解析输入了代码。

+(NSArray *)fetchTweetsForSearchContent:(NSString *)searchContent
{
    NSString *requestURL = [[TwitterFetcherrequestURLWithSearchContent:searchContent] absoluteString];

    NSLog(@"URL: %@",requestURL);
    NSString *query = [requestURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSData *jsonData = [[NSStringstringWithContentsOfURL:[NSURLURLWithString:query] encoding:NSUTF8StringEncodingerror:nil] dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error = nil;

    NSDictionary *fetchResults = jsonData ? [NSJSONSerializationJSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaveserror:&error] : nil;

    if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([selfclass]), NSStringFromSelector(_cmd), error.localizedDescription);
    NSLog(@"%@", fetchResults);
    return [fetchResults objectForKey:@"results"];
}
4

1 回答 1

0
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseData  options:kNilOptions error:nil];     

试试这个可能会有所帮助,并用您从服务器获得的响应数据替换“responseData”

于 2013-03-08T07:50:23.950 回答