如何在Encodable(Swift)中添加动态键名和值?

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

我有一个非常简单的请求。

{"token": "abcd", "key": "value" }

我想把这个请求添加为一个简单的请求 Encodable. 现在,这里出现的问题是: key 名称可以是 "123"、"311 "之类的任何东西,密钥的类型将是 String但它的名字是动态的。如何在Encodable中添加动态名称?

struct Answers: Encodable {
  let token: String 
  let key: String 
}

我试过用属名,但没有用。谁有什么好办法?

swift codable encodable
2个回答
0
投票

我不认为 Codable 目前允许这种功能。你不能创建一个 Codable 类型与 动态键 截至目前。

或者,如果这是你正在使用的模型,你可以简单的创建一个 Dictionary 然后用 JSONEncoder().

例如:

let dict = ["token": "abcd", "1234": "value"]
do {
    let response = try JSONEncoder().encode(dict)
    print(response)
} catch {
    print(error)
}

0
投票

抢。

如果你能改变JSON响应,你可以使用类似这样的东西。{token: "AAA", data: {"key":"123"}}.

所以你可以创建

struct Response<DataType: Codable>: Codable { 
    let token: String
    let data: DataType
}

有了这个 Struct你可以传递许多动态值的组合。

我的解决方案对你的实际数据不起作用,但也许你可以和团队讨论API,也许可以改变数据。

© www.soinside.com 2019 - 2024. All rights reserved.