我正在尝试访问从如下网站下载的数据:
{"quizzes":[
{"id":1, "question": "Can't solve this :("},
{"id":2, "question": "Someone help pls"}]}
下载的数据看起来更加复杂,具有更多的值,更多的键,并且某些键与另一个Key:String字典相关联,但是由于我什至无法访问最简单的字段,因此我认为我将从此开始
我正在使用JSONSerialization,所以我的问题是:
如果我想创建一个变量来保存下载的数据,它将是哪种类型?我会说[String:[String:Any]],但是我不确定“测验”是否代表此特定键上的键,因为数据以'{'开头,而不是以'['。
答案 0 :(得分:0)
可以使用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"