Запрос Alamofire с JSONEncoding выдает ошибку - PullRequest
0 голосов
/ 09 ноября 2018

Я получаю ошибку при передаче объекта JSON в качестве параметра в Alamofire.request

func apiCall2(anyBaseUrl: String = "", apiFunction: ApiName, method m: HTTPMethod = .get,
             parameters: [String: Any]? = nil, isJsonEncoding: Bool = false,
             completion:  @escaping (Bool, Any?, Error?) -> Void) {

    var requestUrl = "\(ActiveBaseURL())\(apiFunction.rawValue)"

    if anyBaseUrl != "" {
        requestUrl = "\(anyBaseUrl)\(apiFunction.rawValue)"
    }

    var param = [String: Any]()

    if let p = parameters {
        param = p
    }

    Alamofire.request(requestUrl, method: m, parameters: param, encoding: isJsonEncoding ? JSONEncoding.default: URLEncoding.default)
        .authenticate(user: ApiUserName, password: ApiPassword)
        .responseJSON(options: .allowFragments) { response in
            print("request body: \(response.request?.httpBody)")
            if response.result.isSuccess {
            }
            print(response.result.error?.localizedDescription)
            completion(false, nil, response.result.error)
    }
}

Мой настоящий формат JSON

{"discount_code": "", "giftcard_code": "", "dt": "2018-11-15", "доставка": { "состояние": "сел", «имя»: «тест», "address1": "testevhsd", "город": "тестовый город", "address2": "testfhd", «мобильный»: «89464633», "shipment_code": "ДА", "почтовый": "672673", "country_id": "129"}, "iccid": "", "uid": "3592", "product": [ { «id»: 104, "type": "countryPlan", Кол-во: 1 }]}

И вот как я передаю JSON в функцию

var parms: Parameters {

        return  [
            "uid": "3592",
            "product": [
                ["id": 104,"type":"countryPlan", "qty": 1]
            ],
            "shipping": ["name":"Test", "mobile": "89464633", "address1": "testevhsd",
                         "address2": "testfhd", "city": "test city", "state": "sel",
                         "postal": "672673", "shipment_code": "YES", "country_id": "129"],
            "discount_code": "",
            "dt":"2018-11-15",
            "giftcard_code": "",
            "iccid": ""]
    }

    Service.shared.apiCall2(apiFunction: .CheckOut, method: .post, parameters: parms, isJsonEncoding: true) { (success, data, _) in

Моя ошибка

"JSON не может быть сериализован из-за ошибки: \ nДанные не могут быть прочитаны, поскольку они имеют неправильный формат."

Сначала я думал, что это из-за того, что веб-сервис не может вернуть правильный JSON, но я ошибся, если я запускаю тот же сервис из почтальона, он работает нормально, и я получаю данные в формате JSON

Я чувствую ошибку, потому что для передачи данных JSON

...