Ios 使用Swift、AlamoFire和SwiftyJSON解析JSON数据

Ios 使用Swift、AlamoFire和SwiftyJSON解析JSON数据,ios,json,swift,swifty-json,Ios,Json,Swift,Swifty Json,作为一个新手,我对如何解析从API获得的一些JSON数据感到非常困惑。我能够使用alamofire请求从api获取JSON数据。此时,我想我有一个NSDictionary对象,JSON as print(JSON)日志来控制大量JSON if let result = response.result.value { let JSON = result as! NSDictionary p

作为一个新手,我对如何解析从API获得的一些JSON数据感到非常困惑。我能够使用alamofire请求从api获取JSON数据。此时,我想我有一个NSDictionary对象,JSON as print(JSON)日志来控制大量JSON

if let result = response.result.value {
                            let JSON = result as! NSDictionary
                           print("this is what JSON is")
                            print(JSON)
我的问题是,首先,JSON实际上是一本NSDictionary吗。其次,如何访问JSON中的值。我是否需要首先将其转换为数据对象。或者如何获取嵌套数据

例如,假设JSON如下所示:

 {
   "contact": {
   "first": "Bob",
   "second":"Jones"
    }
 }
我偶然发现了这段代码,所以:

 let data = JSON(data: JSON)
 print("data\(data["contact"]["first"])")
但它抛出了一个错误。我已经安装了swiftyJSON,但不管有没有它,我都很满意这个解决方案

提前感谢您的建议

您能试试吗

if let result = response.result.value as? [String:Any] {
   if let contact = result["contact"] as? [String:Any] {
      if let first = contact["first"] as?  String {
           print(first)
     }
   }
}
还有这个

let data = JSON(data: JSON)
给出错误,因为参数的类型应为
数据
而不是
字典

我更愿意从Alamofire请求返回数据,并使用可解码的代码对其进行解析并转换为所需的模型

     if let data = response.data {
            let jsonData = JSON(data: data)
            print("data : \(jsonData["contact"]["first"].string)")
        }

Swift4引入了惊人的可编码协议

使用Codable,我们可以通过编写很少的代码行将JSONObject或PropertyList文件建模为等效的结构或类

有许多在线工具可以从您的JSON创建模型类 ()

范例

let decoder=JSONDecoder()
让parsedObject=try decoder.decode(Class.self,from:data)
您可以在以下链接中找到详细信息:

我建议使用codable,这样你就不需要SwiftyJsonI没有decodable了,因为我有一个旧版本的Xcode,因此是swift3。您的方法是使用swiftyJSON还是仅使用swift。