我有这样的 Alamofire 请求:
Alamofire.request("myurl", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseData { (responseData) in
let data = responseData.data
do {
let country = try JSONDecoder().decode(MYOBJECT.self, from: data)
} catch {
print(error)
}
}
MYOBJECTS 来自后端,如下所示:
data class CountryObject(
val country: String,
val name: String,
) : ResponseObject
问题是(显然)MYOBJECT 不符合可解码对象。这是错误=>
实例方法“decode(_:from:)”要求“MYOBJECT”符合“Decodable”
我的问题是我必须复制该对象吗?如何使该对象符合 Decodable 协议?我还需要从 Alamofire 反序列化这个对象(JSON),我的方法正确吗?有什么建议吗?
创建与后端模型对应的Swift模型。看看
JSON
并制作这样的模型:
struct Country: Decodable {
var country: String
var name: String
}
并使用上述模型对其进行解码,就像它返回单个对象一样:
let country = try JSONDecoder().decode(Country.self, from: data)
如果是数组:
let country = try JSONDecoder().decode([Country].self, from: data)
注意:使用 quicktype 快速为您的
JSON
生成模型:)。
首先,你的
CountryObject
似乎是Kotlin而不是Swift?
在 Swift 中,拥有一个符合
Decodable
的类或结构就像这样简单:
struct CountryObject : Decodable {
val country : String
val name : String
}