2017-01-26 3 views
0

Ich habe einen sehr einfachen Swift-Code, um JSON-Daten abzurufen. Aber irgendwie funktioniert es nicht richtig.JSON_encode für ALAMOFIRE

Alamofire.request("*URL*").validate().responseJSON { response in 
     print(response.result.value) 
      if response.result.isSuccess { 
       if let userList:[[String:Any]] = response.result.value as? [[String:Any]] { 
        for user:[String:Any] in userList { 
         if let userName = user["name"] as? String { 
          self._myList.append(User(name: userName, value: true)) 
         } 
        } 
       } 
       self.tableView.reloadData() 
      } else { 
       print(response.result.error) 
      } 
    } 

Während der Ausführung, erhalte ich diese Fehlermeldung in der Konsole:

Optional (Alamofire.AFError.responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed (Error Domain = NSCocoaErrorDomain-Code = 3840 „Ungültige Wert um das Zeichen 0. "UserInfo = {NSDebugDescription = Ungültiger Wert um das Zeichen 0.})))

Der Ausdruck nach dem Aufruf von Alamofire.request zeigt" nil "in der Konsole an.

Was ich nicht verstehe, ist es funktioniert, wenn ich .responseString anstelle von .responseJSON (aber es zeigt nur eine Zeichenfolge). Ich muss wirklich .responseJSON verwenden, da ich das Ergebnis analysieren muss.

Meine JSON, die auf dem Web-Browser erscheint, ist auch sehr einfach:

[{"name":"MrX","value":"0"}] 

Jede Idee?

Mika.

Antwort

0

Verwendung dieses

 import Alamofire 
     import SwiftyJSON 

     let baseURL: String = "http://baseURL.com" 
     Alamofire.request(baseURL) 
     .responseJSON { response in 

      guard response.result.error == nil else { 
       // got an error in getting the data, need to handle it 
       print("error calling GET") 
       print(response.result.error!) 
       return 
      } 

      if let value = response.result.value { 

       let json = JSON(value) // JSON comes from SwiftyJSON 
       print(json) // to see the JSON response 
       let userName = json["name"].array // .array comes from SwiftyJSON 
       for items in userName! { 
        self._myList.append(User(name: items, value: true)) 
       } 

       DispatchQueue.main.async { 
        self.tableView?.reloadData() 
       } 

      } 
    } 

und nehmen Sie die .validate() aus, wenn Sie das nehmen Sie detailliertere Fehlerbeschreibung. Ich hoffe, das hilft.