嵌套 JSON SwiftUI
Posted
技术标签:
【中文标题】嵌套 JSON SwiftUI【英文标题】:Nested JSON SwiftUI 【发布时间】:2021-04-28 18:15:39 【问题描述】:我查看了本教程 https://www.hackingwithswift.com/forums/swiftui/nested-json/4018 以修复嵌套 json 问题。
我的 JSON 源已更改为
["title":"title","link":"...","description":"..."....
到
"items":[..
我原来的结构是这样的
struct Novitads: Codable, Identifiable
public var id = UUID()
public var title: String
public var pubDate: String
public var description: String
public var link: String
public var image: URL
// public var pubDate: String
现在我添加了:
struct News: Codable
var items: [Novitads]
这与文章中的解决方案一致。
不幸的是,我的 fetch 类现在失败了:
class FetchNovitads: ObservableObject
@Published var Novitadss = [Novitads]()
@Published var selectedCode: String?
public lazy var selectC: Double = 0.1
let x: Double = 21.25
func refresh()
let url = URL(string: "https://testapi-")!
print (url)
print (selectedCode)
print (selectC)
selectC = Double(selectedCode ?? "0") ?? 0.1
URLSession.shared.dataTask(with: url) data, _, _ in
do
if let NovitadsData = data
let decodedData = try JSONDecoder().decode(News.self, from: NovitadsData)
DispatchQueue.main.async
self.Novitadss = decodedData
else
print("No data")
catch
print(error)
.resume()
更准确地说是self.Novitadss = decodedData
无法将类型“News”的值分配给类型“[Novitads]”当我使用以前的 json 结构(非嵌套)时没有发生这种情况,因此不需要 News 结构。
我确定我缺少一些微不足道的东西:)
【问题讨论】:
【参考方案1】:如果您解码News
,则必须将items
数组分配给Novitadss
self.Novitadss = decodedData.items
请以小写字母开头的属性命名
【讨论】:
【参考方案2】:使用
self.Novitadss = decodedData.items
现在通过迭代,您可以获取其中关于索引值的属性。
【讨论】:
以上是关于嵌套 JSON SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章