Alamofire JSON Ошибка ответа с параметром сообщения - PullRequest
1 голос
/ 14 июля 2020

Я использую alamofire и swity json, хотя я использую его точно так же, здесь я не получил никаких результатов.

let exampleURl = URL(string: exampleUrl)!
let params: [String: String] = ["id": "expampleString"]
let headers: HTTPHeaders = [
    "charset": "UTF-8",
    "Accept": "application/json"
]
       Alamofire.request(exampleURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).validate(statusCode: 200..<600).responseJSON() { response
           in
           
        switch response.result {
           case.success:
               if let json = response.data {
                    do{
                     let data = try JSON(data: json)
                     let str = data
                   
                     print(str["arrayName"])
                     let arrayData = str["arrayName"].arrayValue.map{$0["content"].stringValue}
                     print(arrayData[0])
                     let credit = arrayData[0]
                                   }
                                   catch{
                                   print("JSON Error")
                                   }
                      }
                  case .failure(let error):
                      print("RESPONSE ERROR: \(error)")
                  }
           }

Это мой Json результат.

{"arrayName":[{"content":"Hello_World"}]}

Это ошибка. Я не понимаю Я отправляю параметры сообщения, но не могу получить параметр в массиве Json.

RESPONSE ERROR: responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Эта ошибка обычно означает, что вы не получаете ответа JSON. Вам необходимо отладить этот ответ, обычно распечатывая его как String или устанавливая точку останова в обработчике ответа и просматривая его там.

0 голосов
/ 14 июля 2020

похоже, что вы неправильно использовали alamofire, попробуйте:

вот запрос:

let url = URL(string: "YOUR LINK HERE")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in  
    let jsonDecoder = JSONDecoder()
    let responseModel = try jsonDecoder.decode(BaseModel.self, from: data!)

}
task.resume()

вот ваши классы быстрой модели:

import Foundation
struct ArrayName : Codable {
    let content : String?

    enum CodingKeys: String, CodingKey {

        case content = "content"
    }

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        content = try values.decodeIfPresent(String.self, forKey: .content)
    }

}

struct BaseModel : Codable {
    let arrayName : [ArrayName]?

    enum CodingKeys: String, CodingKey {

        case arrayName = "arrayName"
    }

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        arrayName = try values.decodeIfPresent([ArrayName].self, forKey: .arrayName)
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...