嵌套 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的主要内容,如果未能解决你的问题,请参考以下文章

如何为嵌套 JSON 中存在 JSON 列表的嵌套 JSON 创建模型?

java怎么组装多层嵌套json

java怎么解析多层嵌套的json得到每个元素

java中mongodb嵌套json查询?

logstash解析嵌套json的问题

SQL:LATERAL VIEW函数解析多嵌套的json