但找到了一个数组。”)),ios,json,swift,alamofire,decode"/>

首页 > 解决方案 > typeMismatch(Swift.DecodingError.Context(codingPath: [], debugDescription: "期望解码字典但找到了一个数组。”))

问题描述

我的 JSON :

[
    {
        "category": "Kor",
        "phoneNum": "010123123",
        "name": "HSKIM"
    }
]

我的可编码模型类:

struct Model : Codable {
    var category: String
    var phoneNum: String
    var name : String

    enum Codingkeys: String, CodingKey {
        case category, phoneNum, name
    }
}

使用 Alamofire 解码服务器端数据:

func get(completionHandler: @escaping (Model) -> Void) {
    let endPoint = "/api/posts/"
    guard let url = URL(string: baseUrl + endPoint) else {return}
    var urlRequest = URLRequest(url: url)
    //3. request setting
    urlRequest.method = .get
    let username = "username"
    let password = "password"
    let loginString = String(format: "%@:%@", username, password)
    let loginData = loginString.data(using: String.Encoding.utf8)!
    let base64LoginString = loginData.base64EncodedString()
    //4. request Header
    urlRequest.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
    urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
    
    
    AF.request(urlRequest as URLRequestConvertible).responseJSON { (responseData) in
        guard let data = responseData.data else {return}
        do {
            let model = try JSONDecoder().decode(Model.self, from: data)
            completionHandler(model)
        }
        catch let err {
            print("Err : \(err)")
        }
    }
}

当我尝试获取()时:

Err : typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "期望解码 Dictionary<String, Any> 但找到了一个数组。", 基础错误: nil) )

我该如何解决这个问题?

标签: iosjsonswiftalamofiredecode

解决方案


推荐阅读