ios - 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) )
我该如何解决这个问题?
解决方案
推荐阅读
- json - Angular 7 - 不从 http.post 响应初始化接口
- selenium - getText() 返回一个对象而不是字符串(使用 selenium-cucumber-js)
- node.js - Alexa插槽值问题
- jquery - 通过单击 Jquery 是否可以简单地保持滑块旋转
- javascript - Ajax/Woocommerce - JavaScript - 如何获取具有产品 ID 的产品价格
- ajax - 如何正确制定wai queryString?
- javascript - bootstrap-treeview 在页面加载时预检查节点
- r - 数据框可以按行而不是 R 中的列包含不同类别的向量吗?
- python - 用于文本和浮点数的最快/最有效的数据存储格式
- r - Windows 上的 RODBC 和 unicode