我有一个非常简单的请求。
{"token": "abcd", "key": "value" }
我想把这个请求添加为一个简单的请求 Encodable
. 现在,这里出现的问题是: key
名称可以是 "123"、"311 "之类的任何东西,密钥的类型将是 String
但它的名字是动态的。如何在Encodable中添加动态名称?
struct Answers: Encodable {
let token: String
let key: String
}
我试过用属名,但没有用。谁有什么好办法?
我不认为 Codable
目前允许这种功能。你不能创建一个 Codable
类型与 动态键 截至目前。
或者,如果这是你正在使用的模型,你可以简单的创建一个 Dictionary
然后用 JSONEncoder()
.
例如:
let dict = ["token": "abcd", "1234": "value"]
do {
let response = try JSONEncoder().encode(dict)
print(response)
} catch {
print(error)
}
抢。
如果你能改变JSON响应,你可以使用类似这样的东西。{token: "AAA", data: {"key":"123"}}
.
所以你可以创建
struct Response<DataType: Codable>: Codable {
let token: String
let data: DataType
}
有了这个 Struct
你可以传递许多动态值的组合。
我的解决方案对你的实际数据不起作用,但也许你可以和团队讨论API,也许可以改变数据。