2016-11-07 119 views
0

我知道已經有很多話題要做到這一點,但我嘗試了所有,我仍然得到一個錯誤。JSON與斯威夫特3

Im做這樣的:

let url = URL(string: "XXXXXXX") 

     let jsonRequest = URLSession.shared.dataTask(with: url!){ (data, response, error) in 

      if error != nil { 

       print(error) 

      } else { 

       if let urlContent = data { 

        do { 

         let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSMutableArray 

         let responseMessage = (jsonResult[0] as AnyObject)["name"]! as? String 

         print(responseMessage) 

        } catch { 

         print("JSON Processing Failed") 
        } 
       } 
      } 
     } 
     jsonRequest.resume() 

這是我的JSON:

[{ 
    "name": "Andrew", 
    "id": "0", 
}, { 
    "name": "Jack", 
    "id": "1", 
}] 

我可以打印安德魯的名字沒有任何問題,但有沒有更好的方式來做到這一點?所有演員對我來說都不合適。

回答

1

如果可能的話,我希望更喜歡使用較小的力量展開的更快速的特定類型的鑄造。這是我會喜歡使用它的方式:

let url = URL(string: "xxxx") 

let jsonRequest = URLSession.shared.dataTask(with: url!){ (data, response, error) in 
    if error != nil { 
     print(error) 
    } else { 
     guard let data = data else { 
      return 
     } 
     do { 
      if let jsonResult = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? [[String: AnyObject]] { 
       let responseMessage = jsonResult[0]["name"] as? String 
       print(responseMessage) 
      }   
     } catch { 
      print("JSON Processing Failed") 
     } 
    } 
} 
jsonRequest.resume() 
+0

這就是我想要的!我嘗試了很多東西,但我總是有錯誤。非常感謝Abhra。 – Adrian