说我有一个结构:
struct Animal {
var age: Int
var type: String
}
我知道我可以定义自定义编码键,但我想要的是,当我将结构编码为JSON时,而不是:
{
"age": 12
"type": "dog"
}
我希望它是:
{
"12": "dog"
}
但我不确定内置编码机制是否可行?
答案 0 :(得分:0)
你可以为Json定制功能:
{"1": "dog"}
{
1 = dog;
}
打印内容:
{{1}}希望对你有所帮助。
答案 1 :(得分:0)
如果要使用Encodable
协议执行此操作,则需要定义一个自定义键类型,以允许您可变地表示值,并自己编写encode(to:)
:
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所说的,这是一个糟糕的想法,但如果这是你需要编码的格式,它仍然是可能的。