【问题标题】:Load an array with no name (JSON) (Swift 5)加载没有名称的数组 (JSON) (Swift 5)
【发布时间】:2020-04-12 21:53:15
【问题描述】:

我正在尝试通过 swift 中的 HTTP get 方法提取 JSON,如下所示:

[{“姓名”:“约翰”,年龄:“十五”},{“姓名”:“苏”,“年龄”:“十六”}]

我的目标是创建一个可以提取数据并将其放入单个单元格的函数。我唯一的问题是如何格式化结构,因为数组没有名称。

这是我的结构的样子:

struct SearchResponse: Codable {
    let name: String?
    let age: String?
}

这就是我(尝试)收集数据的方式:

  guard let data = data else { return }
                                  do {
                                      
  let obj: SearchResponse = try JSONDecoder().decode(SearchResponse.self, from: data)
                                    
  let searchObj = SearchObject(age: obj.age ?? "", name: obj.name ?? "")

                                          
                                
                                  
self.search_object = searchObj ?? []

行数是节是:

return search_object.count

当我运行代码时,单元格只是返回为空白。

【问题讨论】:

    标签: ios json swift


    【解决方案1】:

    您的 JSON 是 SearchResponses 的数组,因此您必须将其解码为 SearchResponses 的数组:

    guard let data = data else { return }
    
    do {
        let objects = try JSONDecoder().decode([SearchResponse].self, from: data)
        let searchObjects = objects.map {
            SearchObject(age: $0.age ?? "", name: $0.name ?? "")
        }
    
        self.search_object = searchObjects
    
    } catch {
        print(error)
    }
    

    或者只是让SearchObject 本身符合Codable 并完全消除对SearchResponse 的需要:

    struct SearchObject: Codable {
        let age: String?
        let name: String?
    }
    
    [...]
    
    guard let data = data else { return }
    
    do {
        self.search_object = try JSONDecoder().decode([SearchObject].self, from: data)
    } catch {
        print(error)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 2021-10-25
      • 2020-01-08
      • 1970-01-01
      • 2016-04-06
      • 2018-08-01
      • 2017-06-10
      • 1970-01-01
      • 2021-09-26
      相关资源
      最近更新 更多