2016-10-05 2 views
2

Ich mache eine einfache Anfrage, um bestimmte Daten aus einer JSON-Datei zu erhalten, aber ich habe Probleme, die genauen Daten zu erhalten.Get Array-Schlüsselwert mit Alamofire

Die JSON-Datei:

{ 
    "Something1": { 
     "Added": "09-10-2016", 
     "Expires": "09-12-2016", 
     "Reliability": "78%", 
     "Views": "2", 
     "Priority": "High" 
    }, 
    "Something2": { 
     "Added": "09-11-2016", 
     "Expires": "09-13-2016", 
     "Reliability": "98%", 
     "Views": "5", 
     "Priority": "Low" 
    } 
} 

Der SWIFT-Code:

Alamofire.request("https://example.com/args.json").responseJSON { response in 
      if let JSON = response.result.value as? [String:AnyObject] { 
       print(JSON["Something1"]) 
      } 
     } 

Mit print(JSON["Something1"]), druckt er alles für something1 wie es soll aber ein Fehler ausgelöst wird, wenn ich versuche, print(JSON["Something1"]["Views"]) zu tun beispielsweise. Wie würde ich das beheben?

+0

Ich denke, Sie müssen Ihre JSON ["Something1"] als ein [String: AnyObject] – koropok

+0

@koropok Das hat es definitiv für mich getan! Vielen Dank! – Matt

+0

Gern geschehen! – koropok

Antwort

3

Ihr Problem bezieht sich nicht auf Alamofire Ich befürchte, es ist eher ein Deal mit JSON, der Swift verwendet. In Ihrem Fall, wenn Sie Ihre erste optionale Bindung machen, konvertieren Sie in eine [String: AnyObject] und es ist korrekt und das bedeutet, dass Sie JSON["Something1"] tiefstellen können.

Aber danach, wenn Sie versuchen, erneut SUBSCRIPT über die JSON["Something1"]["Views"] der Compiler nicht weiß, was haben die JSON["Something1"] so kann man nicht als Wörterbuch verwenden, anstatt Sie es werfen müssen wieder zu einem Wörterbuch, weil verschachtelt ist mit dem optionalen Bindung wie folgt aus:

if let nestedDictionary1 = JSON["Something1"] as? [String: AnyObject] { 
    // access individual value in dictionary 

    if let views = nestedDictionary1["Views"] as? Int { 
     print(views) 
    } 
} 

Sie mehr über die Arbeit mit JSON in diesem article von Apple lesen kann.

Ich hoffe, das hilft Ihnen.