下载此数据后无法检索信息
Posted
技术标签:
【中文标题】下载此数据后无法检索信息【英文标题】:Can't retrieve the info after downloading this data 【发布时间】:2018-11-17 09:00:19 【问题描述】:我正在尝试访问从如下所示的网站下载的数据:
"quizzes":[
"id":1, "question": "Can't solve this :(",
"id":2, "question": "Someone help pls"]
下载的数据看起来更复杂,有更多的值、更多的键,并且一些键与另一个 Key:String 字典相关联,但由于我什至无法访问最简单的字段,我想我会从这个开始.
我正在使用 JSONSerialization,所以我的问题是:
如果我想创建一个可以保存下载数据的变量...它的类型是什么?我会说 [String:[String:Any]],但我不确定“测验”是否代表此特定键上的键,因为数据以“”而不是“[”开头。
【问题讨论】:
我没有资源可以写 swift 2 ,答案在 NSCoding 你真的试过这个吗?就我个人而言,我会选择更通用的格式 [String:Any] 并让运行时检查数据的结构,因为它被解析 你的数据类型应该是[String:[[String:Any]]]
【参考方案1】:
可以使用 JSONDecoder 来代替 JSONSerialization。
示例
struct Question: Decodable
let id: Int
let question: String
struct Quiz: Decodable
let quizzes: [Question]
假设 jsonStr 是您问题中带有 JSON 的字符串:
if let jsonData = jsonStr.data(using: .utf8)
if let quiz = try? JSONDecoder().decode(Quiz.self, from: jsonData)
for question in quiz.quizzes
print("\(question.id) \"\(question.question)\"")
输出
1 "Can't solve this :("
2 "Someone help pls"
【讨论】:
以上是关于下载此数据后无法检索信息的主要内容,如果未能解决你的问题,请参考以下文章