我一直在尝试使用NSJSONSerialization来解析查询结果。我最初使用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"];
}
答案 0 :(得分:0)
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];
尝试这可能有助于将“responseData”替换为您从服务器获取的响应数据