加载没有名称的数组 (JSON) (Swift 5)
Posted
技术标签:
【中文标题】加载没有名称的数组 (JSON) (Swift 5)【英文标题】:Load an array with no name (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
当我运行代码时,单元格只是返回为空白。
【问题讨论】:
【参考方案1】:您的 JSON 是 SearchResponse
s 的数组,因此您必须将其解码为 SearchResponse
s 的数组:
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)
【讨论】:
以上是关于加载没有名称的数组 (JSON) (Swift 5)的主要内容,如果未能解决你的问题,请参考以下文章
TableView 没有加载任何 JSON 数据 Swift 4
在 Swift 中解码 JSON API - 重复的结构名称
在 Swift 中将 JSON 加载到 UItableView