Я хочу декодировать этот ответ JSON - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь декодировать ответ от JSON на мою фотографию загрузки объекта, но я сталкиваюсь с ошибкой.Неверное преобразование из функции выброса типа (_) throws -> () в тип функции без выброса (DefaultDataResponse) -> Void

DispatchQueue.main.async {

    let image = self.photo
    let uploaded_file = (image?.jpegData(compressionQuality: 0.2)!)!
    let url = URLs.profileImage

    Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(uploaded_file, withName: "uploaded_file",fileName: "uploaded_file", mimeType: "image/jpg") 
    }, to: url)
    { (result) in
        switch result {
        case .success(let upload, _, _):

            upload.uploadProgress(closure: { (progress) in
                print("Upload Progress: \(progress.fractionCompleted)")
            })

            upload.response { response in
                print(response.result.value!)
                let data = response.data

                print(JSON(response.data))
                let jsonDecoder = JSONDecoder()
                let res = try jsonDecoder.decode(uploadPhoto.self, from: data ) as uploadPhoto
            }

        case .failure(let encodingError):
            print(encodingError)
        }
    }
}

Я хотел бы декодировать ответ.поэтому я могу получить значения из JSON.

JSON-ответ:

{
    "code": 200,
    "message": "Image Uploaded Successfully",
    "image_link": "uploads\/profile\/1562737080_icons8-key-50 (1).png"
}

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Если ответ JSON имеет формат,

{
    "code": 200,
    "message": "Image Uploaded Successfully",
    "image_link": "uploads/profile/1562737080_icons8-key-50 (1).png"
}

Модель для синтаксического анализа выше JSON будет, как,

struct UploadPhoto: Codable {
    let code: Int
    let message: String
    let imageLink: String
}

Разбор это использование:

do {
    let decoder = JSONDecoder()
    decoder.keyDecodingStrategy = .convertFromSnakeCase
    let response = try decoder.decode(UploadPhoto.self, from: data)
    print(response)
} catch {
    print(error)
}
0 голосов
/ 10 июля 2019

Вы пытались использовать respone.result.value?

if let resultDict = response.result.value as? [String: Any] {
    let message = resultDict ["message"]
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...