JSON 序列化/反序列化 Alamofire、Swift

问题描述 投票:0回答:2

我有这样的 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),我的方法正确吗?有什么建议吗?

ios swift alamofire decodable
2个回答
1
投票

创建与后端模型对应的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
生成模型:)。


1
投票

首先,你的

CountryObject
似乎是Kotlin而不是Swift?

在 Swift 中,拥有一个符合

Decodable
的类或结构就像这样简单:

struct CountryObject : Decodable {
    val country : String
    val name : String
}
© www.soinside.com 2019 - 2024. All rights reserved.