web-dev-qa-db-fra.com

alamofire.error Code = -6006 "JSON n'a pas pu être sérialisé.

Travaille dessus depuis un moment sans succès. J'ai une fonction qui va à une UIButton uniquement pour effectuer des appels alamofire à mon API Rails qui utilise tout le JSON. 

J'utilise Swift 2, Alamofire 3, XCode 7 & Rails 4 pour mon API qui est déployée sur Heroku.

Je continue à avoir cette erreur lorsque je lance la fonction:

alamofire.error Code = -6006 "JSON n'a pas pu être sérialisé. Les données d'entrée étaient nulles ou nulles.

Voici mon code:

@IBAction func Save(sender: AnyObject) {

    let postsEndpoint: String = "https://APIURL"
    let parameters = [
        "users": [
            "name": "James McHarty",
            "avatar": "Some binary data",
            "post": [
                "title": "First Test Post",
                "body": "This is the first test post for the API",
                "liked": "8", //will make INT later
                "img": "more binary data"
            ]
        ]
    ]

    Alamofire.request(.POST, postsEndpoint, parameters: parameters, encoding: .JSON)
        .responseJSON { response in
            guard response.result.error == nil else {
            // got an error in getting the data, need to handle it
            print(response.result.error!)
            return
        }

    }

    print("func'd")

}
12
James H

Ce n'est pas une erreur Alamofire ou Swift. La réponse renvoyée par le serveur n'est pas au format JSON. vous pouvez imprimer les données de réponse et vérifier ce qui ne va pas.

essayez ce code pour imprimer les données de notre serveur afin d'identifier facilement l'erreur et de le résoudre.

Alamofire.request("Your url").responseJSON(completionHandler: { (response) in
    switch response.result {
    case .success(let value):
        break

    case .failure(let error):
        print("\n\n===========Error===========")
        print("Error Code: \(error._code)")
        print("Error Messsage: \(error.localizedDescription)")
        if let data = response.data, let str = String(data: data, encoding: String.Encoding.utf8){
            print("Server Error: " + str)
        }
        debugPrint(error as Any)
        print("===========================\n\n")
    }

})
4
AshvinGudaliya

La réponse renvoyée par le serveur n'est pas au format JSON. Vous pouvez utiliser l'outil pour tester d'abord la demande.

Imprimer le code d'erreur n'est pas un code d'erreur HTTP, en raison de l'échec de la résolution JSON

3
TBXark VFanx

Vous devez vérifier le type mime ce sera "text/plain" au lieu de "application/json". C'est pourquoi la classe JSONSerialization n'est pas en mesure d'analyser les données.

0
Yogendra Singh