2012-08-01 191 views
0

我正在開發一個Facebook的朋友列表不得不顯示的項目。我做了所有必要的編碼,以獲得效應初探,但效應初探就像下面如何解析JSON響應?

{"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在兩個不同的陣列。

任何幫助將不勝感激。

回答

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]; 


} 

} 
+0

你應該更新它以使用'NSJSONSerialization'。 – 2012-12-28 07:15:25

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解析和序列爲您服務。

+0

能否請你告訴我的代碼示例解析這一點,因爲即時通訊新本 – surendher 2012-08-01 05:10:53

+0

@surrender添加示例代碼,但請**嘗試去了解它是如何工作的**。謝謝。 – 2012-08-01 05:16:16

2

這是你得到的json響應。所以你需要一個JSON解析器把這個字符串轉換成Objective-C對象。在iOS應用程序中,您可以使用像json-framework這樣的庫。這個庫允許你輕鬆地解析JSON並從字典/數組中生成JSON(這實際上是所有JSON的組成部分)。

從SBJson文檔:後JSON解析你會得到這個轉換

JSON映射到Objective-C的類型以下列方式:

  • 空 - > NSNull
  • 串 - > NSString
  • array - > NSMutableArray
  • object - > NSMutableDictionary
  • 真實 - >的NSNumber的-numberWithBool:是
  • 假 - >的NSNumber的-numberWithBool:NO
  • 整數高達19位 - >的NSNumber的-numberWithLongLong:
  • 所有其他號碼 - > NSDecimalNumber
2

看起來像JSON,而不是HTML。 (你可能已經知道這一點,因爲你用json標記了我的問題。)

我不確定爲什麼其他人推薦第三方庫來做到這一點,除非你需要支持相當老的操作系統版本。只需使用Apple內置的NSJSONSerialization 類即可。