为了解析JSON,我需要使用3种结构。
struct AppleApi: Decodable {
let feed: Feed
}
struct Feed: Decodable {
let results: [Result]
}
struct Result: Decodable {
let artistName: String
let artWorkUrl: String
enum CodingKeys : String, CodingKey {
case artistName = "artistName"
case artWorkUrl = "artworkUrl100"
}
}
但是当我尝试用解析后的数据填充数组时,我得到了以下消息:
无法将类型“ [结果]”的值转换为预期的参数类型 “ AppleApi”
这是我的错误消息:
do {
let appData = try JSONDecoder().decode(AppleApi.self, from: jsonData)
print(appData.feed.results.count)
var dataApp = appData.feed.results
print(appData)
DispatchQueue.main.async {
self.feedReseult.append(dataApp)
self.myCollectionView.reloadData()
}
} catch let err {
print("Error",err)
}
这是我的数组:
var feedReseult = [AppleApi]()
我可能需要到达3.结构才能到达JSON内部的数组,以便具有相同类型的参数类型。我该怎么办?
答案 0 :(得分:0)
您的feedReseult
声明应为
var feedReseult = [Result]()
并按如下所示附加dataApp
,
DispatchQueue.main.async {
self.feedReseult.append(contentsOf: dataApp)
self.myCollectionView.reloadData()
}
我也感觉错了,feedResult
而不是feedReseult
答案 1 :(得分:0)
看来您来自Json的结构未正确组合,您每一个JSON加载只需要一个结构。你能给JSON样本吗?
如果要解码AppleAPI中的Feed,则应创建AppleApi.Feed类型的对象并将结果放入其中。
希望这会有所帮助