如何在swift 3.0中获得Json响应?

问题描述:

我在XCode 8中以不同格式生成JSON响应,因为它用于出现在XCode 7.3中如何在swift 3.0中获得Json响应?

因此,我的应用程序停止响应。我正在分享我的回复的截图。

这是我使用

func MobileNumber(_ notification : Notification){ 
     activityIndicator.stopAnimating() 
     if let notificationDict = (notification as NSNotification).userInfo{ 
      print(notificationDict) 
      if let dataDict = notificationDict["Data"] as? NSDictionary{ 
       print(dataDict) 
       if let status = dataDict["response"] as? Int{ 
        switch status{ 
        case 1: 
         if let data = dataDict["data"] as? NSDictionary{ 
          if let mobileNumber = data["phone"] as? String{ 
           UserDefaults.standard.set(mobileNumber, forKey: DefaultsKey.phoneNumber.rawValue) 
           print(mobileNumber) 
          } 
          UpdateFrame1() 
         } 

JSON响应代码:

Data]: 243 bytes 
[Result]: SUCCESS: { 
    data =  { 
     "__v" = 0; 
     "_id" = 5833e131de2fe2342b0d0410; 
     code = "<null>"; 
     "created_at" = "2016-11-22T06:09:53.097Z"; 
     "expiry_date" = "2016-11-22T06:09:53.097Z"; 
     phone = 9********; 
     status = active; 
    }; 
    message = "Resending your unused auth code"; 
    response = 1; 
} 
[Timeline]: Timeline: { "Request Start Time": 501493300.746, "Initial Response Time": 501493302.862, "Request Completed Time": 501493302.868, "Serialization Completed Time": 501493302.872, "Latency": 2.116 secs, "Request Duration": 2.122 secs, "Serialization Duration": 0.003 secs, "Total Duration": 2.126 secs } 
+1

告诉我们,您使用的代码。 –

+0

另外显示旧的和新的JSON响应。并将其作为文本复制并粘贴到问题中(而不是使用屏幕截图)。 – Codo

+0

由于xcode更新和时间短缺,无法显示旧响应。 –

试试这个: -

let val = userInfo["SUCSESS"] 
     if let jsonData = (val as AnyObject).data(using: String.Encoding.utf8.rawValue) 

     { 
      do{ 
       let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.mutableContainers) 

       if let dict = jsonObject as? [String: AnyObject] 
       { 

        print("YOUR PHONE NUM \((dict as? [String : AnyObject])?["data"]?["phone"])") 
       } 

      }catch let error as NSError { 
       print("Failed to load: \(error.localizedDescription)") 


      } 

     } 
+0

我必须按照我在问题中陈述的方式来执行此操作,当我们击中API并且我们正在获得响应时,您的方式将起作用。 –

+0

如上所述,您可以使用“dataDict”,而不是“userInfo”,这对我有用 –