0

我正在开发一个必须显示 facebook 的好友列表的项目。我做了所有必要的编码以获得响应,但响应如下

 {"data":[{"name":"Ramprasad Santhanam","id":"586416887"},{"name":"Karthik Bhupathy","id":"596843887"},{"name":"Anyembe Chris","id":"647842280"},{"name":"Giri Prasath","id":"647904394"},{"name":"Sadeeshkumar Sengottaiyan","id":"648524395"},{"name":"Thirunavukkarasu Sadaiyappan","id":"648549825"},{"name":"Jeethendra Kumar","id":"650004234"},{"name":"Chandra Sekhar","id":"652259595"}

谁能告诉我如何在两个不同的数组中保存名称和 ID。

任何帮助将不胜感激。

4

4 回答 4

3

您可以在下面看到 html 响应如何解析。那里我得到了 facebook 朋友。

- (void)fbGraphCallback:(id)sender 

    {

    if ( (fbGraph.accessToken == nil) || ([fbGraph.accessToken length] == 0) )


 {

            //restart the authentication process.....
    [fbGraph authenticateUserWithCallbackObject:self andSelector:@selector(fbGraphCallback:) 
                         andExtendedPermissions:@"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins"];

} 
else 

{

    NSLog(@"------------>CONGRATULATIONS<------------, You're logged into Facebook...  Your oAuth token is:  %@", fbGraph.accessToken);
    FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:@"me/friends" withGetVars:nil];// me/feed 
    //parse our json
    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *   facebook_response = [parser objectWithString:fb_graph_response.htmlResponse error:nil]; 
    //init array 
    NSMutableArray * feed = (NSMutableArray *) [facebook_response objectForKey:@"data"];
    //  NSMutableArray *recentFriends = [[NSMutableArray alloc] init];
     arr=[[NSMutableArray alloc]init];
    //adding values to array
    for (NSDictionary *d in feed) 
    {
        [arr addObject:d];


    }

    //NSLog(@"array is %@ ",arr);
    [fbSpinner stopAnimating];
    [fbSpinner removeFromSuperview];

    [myTableView reloadData];


}

}
于 2012-08-01T05:14:02.940 回答
2

这是您得到的 json 响应。因此,您需要一个 JSON 解析器来将此字符串转换为 Objective-C 对象。在 iOS App 中,您可以使用json-framework之类的库。这个库将允许您轻松解析 JSON 并从字典/数组生成 json(这实际上是所有 JSON 的组成部分)。

来自 SBJson 文档:JSON 解析后,您将获得此转换

JSON 通过以下方式映射到 Objective-C 类型:

  • 空 -> NSNull
  • 字符串 -> NSString
  • 数组 -> NSMutableArray
  • 对象-> NSMutableDictionary
  • true -> NSNumber 的 -numberWithBool:YES
  • false -> NSNumber 的 -numberWithBool:NO
  • 最多 19 位的整数 -> NSNumber 的 -numberWithLongLong:
  • 所有其他数字-> NSDecimalNumber
于 2012-08-01T05:08:55.213 回答
2

这看起来像 JSON,而不是 HTML。(你可能已经知道这一点,因为你用json我看到了这个问题。)

我不太确定为什么其他人会推荐第三方库来执行此操作,除非您需要支持相当旧的操作系统版本。只需使用 Apple 内置的NSJSONSerialization 类。

于 2012-08-01T05:10:22.910 回答
1

这不是 HTML。这是 JSON。为此,您需要一个JSON 解析器

JSON 解析器通常会从字符串中生成 NSDictionary 或 NSArray。通过我的实现,你会做这样的事情:

NSMutableArray *names = [NSMutableArray array];
NSMutableArray *ids = [NSMutableArray array];

NSDictionary *root = [responseString parseJson];
NSArray *data = [root objectForKey:@"data"];
for (NSDictionary *pair in data)
{
    [names addObject:[pair objectForKey:@"name"]];
    [ids addObject:[pair objectForKey/@"id"]];
}

最新版本的 iOS 包含一个新的 Foundation 类,NSJSONSerialization它将为您处理任何 JSON 解析和序列化。

于 2012-08-01T05:08:41.290 回答