我一直在試圖讓twitter搜索工作使用NSJSONSerialization來解析查詢結果。我原本使用了一個關於使用SLRequest訪問Twitter數據的教程,但是我發現在這樣做時我需要結果來更新一個屬性以保存它們。我想獲取是一個類方法,所以我避免使用屬性。我遇到的問題有點奇怪,我不知道爲什麼會發生。基本上我可以可靠地獲取[NSJSONSerialization JSONObjectWithData:...]的提取 - 除了字典中的一個鍵:值對之外,結果。鍵「結果」的值以()形式返回,並且類型爲__NSArrayM。我可以看到我發送的用於獲取數據的URL是正確的,並且解析的字典中的其餘信息是正確的。我不確定爲什麼會發生這種情況。NSJSONSerialization的Twitter API搜索請求
下面是一個例子GET請求: https://search.twitter.com/search.json?q=tech%20filter%3Alinks%20lang%3Aen&src=typd&rpp=1&include_entities=true
如果你去到該頁面,你可以看到「結果」鍵具有與之關聯的值,它應該是一個數組。在我的分析版本,不過,我有一個空數組:
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"];
}