swift - 嵌套 JSON SwiftUI
问题描述
我检查了本教程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
不能将类型“新闻”的值分配给类型“[Novitads]”当我使用以前的 json 结构(非嵌套)时,这并没有发生,因此不需要 News 结构。
我确信我缺少一些微不足道的东西:)
解决方案
如果您解码News
,则必须将items
数组分配给Novitadss
self.Novitadss = decodedData.items
并请以小写字母开头的属性命名
推荐阅读
- angular - 我想从列表 angular 6 中搜索数据
- asp.net-core - 30 分钟后,asp.net 核心身份中缺少其他声明
- laravel - 如果使用 VUE JS 在 s3 中不存在图像,如何设置默认图像
- vue.js - 在vue中加载dom时如何获取dom的高度?
- python - 关于opencv-python 3.4.3
- r - Biostrings::getPromoterSeq 返回查询基因 ID 的多个序列
- reactjs - React TS - 向上传递组件树
- c# - 将 C# Translate Text API 代码从异步转换为 SQL Server CLR 函数的同步
- tuples - 如何在水晶语言的宏中使用构造函数创建一个元组
- assembly - MIPS ASSEMBLY,打印值,突然中断