【发布时间】:2020-08-15 22:33:43
【问题描述】:
我目前正在尝试编码一个通用结构 (T),它具有 JSONEncoder 的此类属性:
struct A <T:Codable> : Codable {
var id: Int
var attribute : T
init(id: Int, attribute: T){
self.id = id
self.attribute = attribute
}
}
struct B : Codable {
var name: String
var age: Int
}
let encoder = JSONEncoder()
let foo = A<B>(id: 1, attribute: B(name: "name", age: 29))
try? encoder.encode(foo)
这会产生这样的 JSON:
{
"id" : 1,
"attribute" : {
"name" : "name",
"age" : 29
}
}
但我想自定义编码以将嵌套属性获取到根级别:
{
"id" : 1,
"name" : "name",
"age" : 29
}
使用自定义 CodingKey 结构对我不起作用,因为 T 可能有任意数量的属性,并且事先不知道键(属性名称)。
【问题讨论】:
标签: json swift generics encoding