2016-10-05 33 views
2

我正在提出一個簡單的請求來從JSON文件中獲取特定的數據,但我在獲取確切數據時遇到問題。使用Alamofire獲取數組的關鍵值

的JSON文件:

{ 
    "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" 
    } 
} 

的SWIFT代碼:

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

隨着print(JSON["Something1"]),它打印家居Something1就像它應該,但是當我嘗試做print(JSON["Something1"]["Views"])拋出一個錯誤例如。我將如何去解決這個問題?

+0

我想你必須把你的JSON [「Something1」]作爲[String:AnyObject] – koropok

+0

@koropok這絕對適合我!謝謝! – Matt

+0

不客氣! – koropok

回答

3

您的問題與Alamofire無關恐怕更多的是使用Swift處理JSON。在你的情況下,當你進行第一次可選綁定時,你將轉換爲[String: AnyObject],這是正確的,這意味着你可以下標JSON["Something1"]

但在那之後,當你嘗試過JSON["Something1"]["Views"]再次標中的編譯器不知道有JSON["Something1"]所以你不能用一個字典,而不是你需要的,因爲使用可選的嵌套再次投它一本字典這樣的綁定:

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

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

您可以在Apple的article中瞭解有關JSON工作的更多信息。

我希望這對你有所幫助。