【发布时间】:2018-09-01 09:22:41
【问题描述】:
鉴于以下 JSON 文档,我想创建一个具有四个属性的 struct:filmCount (Int)、year (Int)、category (String) 和 actor (Actor 数组)。
{
"filmCount": 5,
"year": 2018,
"category": "Other",
"actors":{
"nodes":[
{
"actor":{
"id":0,
"name":"Daniel Craig"
}
},
{
"actor":{
"id":1,
"name":"Naomie Harris"
}
},
{
"actor":{
"id":2,
"name":"Rowan Atkinson"
}
}
]
}
}
PlacerholderData 是一个结构体,用于存储三个主要属性和应该从 JSON 对象的 actors 属性内的嵌套 nodes 容器中检索的演员列表。
占位符数据:
struct PlaceholderData: Codable {
let filmCount: Int
let year: Int
let category: String
let actors: [Actor]
}
Actor.swift:
struct Actor: Codable {
let id: Int
let name: String
}
我试图通过提供我自己的init 来手动初始化解码器容器中的值来做到这一点。我怎样才能解决这个问题而不必有一个存储nodes 对象的中间结构?
【问题讨论】:
-
您需要另一个结构
struct Actors: Codable { let nodes: [Actor] }并在 PlaceholderData 结构中使用它而不是[Actor]:let actors: Actors
标签: json swift codable decodable