2017-03-05 227 views
-2

我有从FBSDKGraphRequest中拉出的以下JSON数据结构。我想提取数据并将其放入数组。我对第一个“数据”键有困难。提取JSON数据 -

继承人我FBSDKGR:

let params = ["fields": "name, picture.type(large)"] 
    let request = FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: params) 
    request!.start { (connection, result, error) -> Void in 

     if error != nil { 
      print("There is some error getting friends", error!) 
     } 
     else if result != nil { 
      print("Here is the result", result!) 
+0

本质上我想将这些数据转换成UITableView –

+5

你在SO上搜索过吗?有数百个相关的问题来解析JSON。阅读JSON! '[]'是数组(通过索引进行下标)'{}'是字典(通过键被下标)。然而,列表是Swift集合类型的控制台输出。有'()'是数组,'{}'是词典。 – vadian

回答

1

With an extra dependency, if you don't mind.

import SwiftyJSON 

let json = JSON(result) // after you get result from FBSDKGR 
let data = json["data"].array 
for (index, _) in data.enumerated() { 
    if let id = json["data", index, "id"].int { 
      // add to your array 
      if let name = json["data", index, "name"].string { 
       // continue nesting... 
     } 
    } 
} 
0

正如你JSOND DTA是字典的数组所以,我们可以通过下面的方式把结果。首先,我们将采取两个阵列,一个是名单,另一个是图片细节。这里的图片细节数组是字典数组。让我们去代码

var namesArray = [String]() 
var ImageDetailsArrayDict= [[String :AnyObject]]() 

let params = ["fields": "name, picture.type(large)"] 
    let request = FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: params) 
    request!.start { (connection, result, error) -> Void in 

     if error != nil { 
      print("There is some error getting friends", error!) 
     } 
     else if result != nil { 
      print("Here is the result", result!) 
     if let response = result["data"] as? [[String :AnyObject]] { 

       for i in 0..<response.count { 
        namesArray.append(response[i]["name"] as! String)     
        ImageDetailsArrayDict.append(response[i]["picture"]) 

       } 
       } 
      } 
     } 

现在,我们有两个数组。所以我们可以很容易地将它填充到tableView中。 祝你好运。

+0

仍然有一个错误类型任何没有下标成员: 如果让响应=结果[“数据”]为? [[String:AnyObject]] { –

+0

它在我身边工作,plz调试和运行 – Harish