我正在开展一个必须展示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。
任何帮助将不胜感激。
答案 0 :(得分: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];
}
}
答案 1 :(得分:2)
这是你得到的json回应。因此,您需要一个JSON解析器将此字符串转换为Objective-C对象。在iOS App中,您可以使用json-framework之类的库。这个库将允许您轻松地解析JSON并从字典/数组生成json(这实际上是所有JSON的组成)。
来自SBJson docs:在JSON解析之后,您将获得此转换
JSON以下列方式映射到Objective-C类型:
- null - &gt; NSNull
- string - &gt;的NSString
- 数组 - &gt;的NSMutableArray
- 对象 - &gt;的NSMutableDictionary
- true - &gt; NSNumber的-numberWithBool:是
- false - &gt; NSNumber的-numberWithBool:否
- 最多19位数的整数 - &gt; NSNumber的-numberWithLongLong:
- 所有其他数字 - &gt; NSDecimalNumber
答案 2 :(得分:2)
看起来像JSON,而不是HTML。 (您可能已经知道这一点,因为我用json
标记了问题。)
我不确定为什么其他人会建议第三方库来执行此操作,除非您需要支持相当旧的操作系统版本。只需使用Apple内置的NSJSONSerialization 类。
答案 3 :(得分:1)
这不是HTML。这是JSON。你需要一个JSON parser。
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的最新版本包含一个新的基础类NSJSONSerialization
,它将为您处理任何JSON解析和序列化。