2017-03-05 11 views
-2

Ich habe die folgende JSON-Datenstruktur von FBSDKGraphRequest abgerufen.JSON-Daten extrahieren -

data =  (
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 
      { 
     id = "<USER_ID_GOES_HERE>"; 
     name = "Tom Jones"; 
     picture =    { 
      data =     { 
       "is_silhouette" = 0; 
       url = "<USER_IMAGE_URL_GOES_HERE>"; 
      }; 
     }; 
    }, 

Ich möchte die Daten extrahieren und in ein Array platzieren. Ich habe Schwierigkeiten mit dem ersten "Daten" Schlüssel.

Heres mein 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

im Wesentlichen möchte ich diese Daten in eine UITableView –

+5

Haben Sie auf SO suchen? Es gibt Hunderte von verwandten Fragen zum Parsen von JSON. Lies das JSON! '[]' sind Arrays (die durch den Index indiziert werden) '{}' sind Wörterbücher (die durch Schlüssel indiziert werden). Die Auflistung ist jedoch eine Konsolenausgabe eines Swift-Erfassungstyps. There '()' sind Arrays und '{}' sind Wörterbücher. – vadian

Antwort

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

Als Ihr JSOND dta ist Array von Wörterbuch so, wir das Ergebnis durch die folgende Weise werfen können. Zuerst werden wir zwei Arrays nehmen, eines ist für die Namensliste und anderes ist für Bilddetails. Hier Bilddetails Array ist Array von Wörterbuch. lass uns gehen für Code

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"]) 

       } 
       } 
      } 
     } 

Jetzt haben wir zwei Array. so können wir es einfach in der TableView auffüllen. Viel Glück.

+0

Es gibt immer noch einen Fehlertyp, der keine Subscript-Member hat: wenn lassen Antwort = Ergebnis ["Daten"] als? [[String: AnyObject]] { –

+0

es funktioniert auf meiner Seite, plz debuggen und ausführen – Harish