gpt4 book ai didi

swift 编码 : possible to have variable keys?

转载 作者:行者123 更新时间:2023-11-28 15:06:51 24 4
gpt4 key购买 nike

假设我有一个结构:

struct Animal {
var age: Int
var type: String
}

我知道我可以定义我的自定义编码键,但我想要的是,当我将结构编码为 JSON 时,而不是:

{
"age": 12
"type": "dog"
}

我希望它是:

{
"12": "dog"
}

但我不确定这是否可以通过内置编码机制实现?

最佳答案

如果你想使用 Encodable 协议(protocol)来做到这一点,你将需要定义一个自定义键类型,它允许你可变地表示值,并编写 encode (对:)你自己:

struct Animal : Encodable {
var age: Int
var type: String

private struct CodingKeys : CodingKey {
var stringValue: String
var intValue: Int?

init?(stringValue: String) {
self.stringValue = stringValue
self.intValue = nil
}

init?(intValue: Int) {
self.stringValue = "\(intValue)"
self.intValue = intValue
}
}

public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(type, forKey: CodingKeys(intValue: age)!)
}
}

我必须重申@Rob 所说的话,这是一个糟糕的想法,但如果这是您需要编码的格式,它仍然是可能的。

关于 swift 编码 : possible to have variable keys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com