下载此数据后无法检索信息

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"

【讨论】:

以上是关于下载此数据后无法检索信息的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 ios 客户端检索条卡详细信息

$.getJSON 不检索最新信息

qbittorrent检索不到元数据

应用程序升级到oracle 11g后,无法通过SOAP API Web服务检索数据

IOS应用内购买验证或数据检索

sqlserver2019更新时报错无法为该请求检索数据