首页 > 解决方案 > swift4:最后的垃圾。错误

问题描述

使用Alamofire,swiftyJSONswift4,我得到了这个错误

错误:responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误域 = NSCocoaErrorDomain 代码 = 3840 “垃圾结束。” UserInfo = {NSDebugDescription = 垃圾结束。}))

使用调用此 API 时

class func getLatestProducts( completion: @escaping (_ error: Error?, _ success: Bool,_ value: ErrorModel) -> Void) {

    let url = URLs.latestProducts

    print("url::: ", url)

    Alamofire.request(url, method: .get, encoding: URLEncoding.default, headers: nil)
        .responseJSON { reponse in
            switch reponse.result {
            case .failure(let error):
                print("error: ", error)
                completion(error, false, ErrorModel())
            case .success(let value):
                let json = JSON(value)
                print(json)
                completion(nil, true, ErrorModel())
            }
    }
}

在不同站点进行测试时,响应采用快速格式,这就是响应

{
"data": [
    {
        "id": 4,
        "title": "Ut incidunt et dolorem inventore qui sunt harum.",
        "price": "49",
        "category_id": "13",
        "modern": "1",
        "fixed": "0",
        "created_at": "2018-08-11 18:31:06",
        "category": {
            "id": 13,
            "name": "Aliquam impedit.",
            "icon": "LawnGreen"
        },
        "image": [
            {
                "id": 15,
                "image": "https://lorempixel.com/640/480/?78973",
                "product_id": "4"
            }
        ]
    },
    {
        "id": 24,
        "title": "apple iPhone X",
        "price": "5000",
        "category_id": "28",
        "modern": "0",
        "fixed": "1",
        "created_at": "2018-08-10 19:38:29",
        "category": {
            "id": 28,
            "name": "قسم الجوالات",
            "icon": "fas fa-mobile-alt"
        },
        "image": [
            {
                "id": 10,
                "image": "m4cRboy.png",
                "product_id": "24"
            }
        ]
    },
    {
        "id": 23,
        "title": "Mollitia consectetur sed proident commodo ipsam eos dolorem harum magni consequatur aliquid quos dolorem optio consequuntur aut consequat",
        "price": "203",
        "category_id": "28",
        "modern": "0",
        "fixed": "1",
        "created_at": "2018-08-08 06:54:11",
        "category": {
            "id": 28,
            "name": "قسم الجوالات",
            "icon": "fas fa-mobile-alt"
        },
        "image": [
            {
                "id": 9,
                "image": "pXOdboy2.png",
                "product_id": "23"
            }
        ]
    }
    ]
}

这里有什么问题 ?

标签: swiftalamofire

解决方案


1-添加此而不是 nil 标头

let headers : HTTPHeaders = ["Content-Type":"application/json"]

2-添加这个

.validate().responseJSON

推荐阅读