2017-01-26 10 views
0

JSONデータを取得するための非常にシンプルなSwiftコードがあります。しかし、どういうわけかそれは適切に動作しません。ALAMOFIREのJSON_encode

オプション(Alamofire.AFError.responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(エラードメイン= NSCocoaErrorDomainコード= 3840「無効な値:

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) 
      } 
    } 

は、実行時には、私は、コンソールでこのエラーメッセージが表示されます「0」の前後に値が無効です。UserInfo = {NSDebugDescription =文字0の値が無効です。)))))))

Alamofire.requestを呼び出した後の出力は、コンソールに「nil」と表示されています。

私が理解できないことは、.responseJSONの代わりに.responseStringを使用すると動作していることです(文字列のみを表示します)。私は結果を解析する必要があるので、本当に.responseJSONを使用する必要があります。 Webブラウザに表示されます

私のJSONは、同様に非常に簡単です:

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

任意のアイデア?

Mika。

答えて

0

使用この

 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() 
       } 

      } 
    } 

、あなたはそれを取る場合は、より詳細なエラーの説明が表示されます、.validate()アウトを取ります。希望が役立ちます。