2016-01-29 131 views
0

問題是我無法用我認爲正確的代碼填充數組來解析帶有swiftyJSON的JSON文件。試圖在swiftyJSON中快速解析JSON

以及我不知道我發送請求的過程是否正確。

JSON格式:這應該簡化爲它真正代表的內容:帶有「字符串」鍵和字典數組值的字典。然後是一個帶有字典值的字符串鍵。然後一個字符串值,我需要一個字符串。

{ 
    "string1" : [ 
     { "string2" : { 
      "string3" : "DataINeed" 
      } 
     } 
    ] 
    } 

我的代碼

func downloadSecondJSONData(completed: DownloadComplete) 
{ 

    let API_ServerKey = "My API Key" 
    let URL_Search = "URL Address" 

    let urlString = "\(URL_Search)" 
    let url = NSURL(string: urlString)! 

    Alamofire.request(.GET,url).responseJSON { (response) -> Void in 
     switch response.result 
     { 
     case .Success: 
      if let value = response.result.value 
      { 
       let json = JSON(value) 
       if let data = json["string1"]["string2"]["string3"].string 
       { 
        self.dataArray.append(data) 
       } 

      } 
     case .Failure(let error): 
      print(error) 
     } 
     completed() 
    } 

} 

func printData() 
{ 
    print(self.dataArray.count) 

} 

如何我試圖調用的方法

downloadFirstJSONData {() ->() in 
     self.randomMethod() //data i use with the downloadFirstJSONData is required to use in the downloadSecondJSONData 

     self.downloadSecondJSONData({() ->() in 
      self.printData() //check if data has been stored 
     }) 

    } 
+0

'JSON [」 string1「] [0] [」string2「] [」string3「]。string' – Leo

回答

1

你好像不訪問第一字典後面的陣列。

我猜安全的方式來訪問的第一個對象是:

if let array = json["string1"].array, 
    let firstDict = array.first, 
    let data = firstDict["string2"]["string3"].string { 
     self.dataArray.append(data) 
} 

不過,我想用SwiftyJSON你也可以做的,你有什麼樣的變化:

if let data = json["string1"][0]["string2"]["string3"].string { 
    self.dataArray.append(data) 
} 
+1

太棒了。能夠使用您發佈的第二種方法正常訪問。只是忘了我需要確定我正在訪問的數組的哪個索引 – lifewithelliott