Spa*_*Dog 0 json swift codable
我有一个像这样的 JSON
[
{
"name": "car",
"color": "red"
},
{
"name": "bike",
"color": "blue"
},
... etc
]
Run Code Online (Sandbox Code Playgroud)
我在解码过程中可以使用这个模型
struct Element:Codable {
var name:String?
var color:String?
}
Run Code Online (Sandbox Code Playgroud)
稍后在代码中我有ScrollView这样的
ScrollView(.vertical, showsIndicators: false) {
LazyVGrid(columns: gridItemLayout, alignment: .center, spacing: 10, content: {
ForEach(allElements) { element in
Run Code Online (Sandbox Code Playgroud)
allElements是一个数组Element。
因为我allElements在那里使用,所以我必须使其Element可识别......
struct Element:Codable, Identifiable {
var id = UUID()
var name:String?
var color:String?
}
Run Code Online (Sandbox Code Playgroud)
现在它无法解码 JSON,因为 JSON 没有id.
我尝试添加
"id" : "",
Run Code Online (Sandbox Code Playgroud)
JSON 上的所有元素均未成功。
有任何想法吗?
您只需告诉编译器这id不是 JSON 的一部分。您可以通过声明CodingKey符合enum您的Codable类型来做到这一点。
综合方法将仅使用兼容Codable中的密钥来解码/编码您的类型。因此,如果您省略and仅指定and ,则不会尝试在 JSON 中查找键。CodingKeyenumidenumnamecolorCodableid
struct Element: Codable, Identifiable {
let id = UUID()
var name:String?
var color:String?
private enum CodingKeys: String, CodingKey {
case color
case name
}
}
Run Code Online (Sandbox Code Playgroud)