【发布时间】:2018-04-26 19:53:53
【问题描述】:
我正在尝试解析 JSON:
{
"meta": {
"page": 1
},
"search-results": [
{
"id": 41528747
}
]
}
我定义了以下结构:
public struct PagedCourses: Codable {
public struct Meta: Codable {
public let page: Int
enum CodingKeys: String, CodingKey {
case page = "page"
}
}
public struct Course: Codable {
public let id: Int
enum CodingKeys: String, CodingKey {
case id = "id"
}
}
public let meta: Meta
public let search_results: [Course]
}
当我得到数据时,我得到一个错误。
let courses = try? JSONDecoder().decode(PagedCourses.self, from: data)
我认为变量“search_results”的名称有错误,但我无法重命名它。
如何解析这些数据?
【问题讨论】:
-
在 StackOverflow 上提问时,您应该始终努力提供可执行代码,在 Swift 中,这最好作为 Playground 来完成。您还应该打印出您得到的错误,在这种情况下将是
keyNotFound(__lldb_expr_1.PagedCourses.(CodingKeys in _63370E247A5AFC0F0F23D40800403DB3).search_results, Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key search_results (\"search_results\").", underlyingError: nil))确认您的怀疑。幸运的是,您可以对此做一些事情,如我的回答所示。
标签: json swift xcode jsondecoder