2017-02-08 76 views
1

當前正在學習Swift,並且我是解析json的新手。 我想解析使用alamofire使用swift 3的json。但我沒有得到任何迴應。我應該如何獲取嵌套的參數1或參數2的值? 我的JSON是這樣的:無法使用alamofire使用閉包解析json

{ "data":{ 
    "level1":{ 
    "level2":{ 
     "parameter1":"000000", 
     "parameter2":"00/00/00 00:00:00", 
     "parameter3":"00.0", 
    } 

我的SWIFT代碼看起來像這樣,

func downloadDataDetails(completed: @escaping DownloadComplete) { 
    //Get data from URL 
    Alamofire.request("MY_URL").responseJSON { response in 
     let result = response.result 

     if let dict = result.value as? Dictionary<String , AnyObject> { 
      if let data = dict["data"] as? String { 
       if let level1 = dict["level1"] as? String { 
        if let level2 = dict["level2"] as? String? { 
         self._myValue = level2 
        } 
       } 
      } 
     } 
     completed() 
    } 

回答

1

我建議你使用SwiftJson(https://cocoapods.org/pods/SwiftyJSON

如果你需要驗證的東西存在,您可以使用.exist()(返回布爾值)

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
      print(json) //Create a breakpoint here 
    } 

如果你有這樣的JSON,你需要知道,如果參數1存在:

(把一個破發點中的打印(JSON))

(在控制檯) (LLDB)po json["data"]["level1"]["level2"]["parameter1"].exists() // response true

在代碼如下:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

     } 

如果你需要得到的價值是:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 

完整的示例:

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
     if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 
      print(json["parameter1"]) 
    } 

控制檯日誌:

000000 
{ 
    "data" : { 
    "level1" : { 
     "level2" : { 
     "parameter1" : "000000", 
     "parameter3" : "00.0", 
     "parameter2" : "00\/00\/00 00:00:00" 
     } 
    } 
    } 
}