【问题标题】:Get array key value with Alamofire使用 Alamofire 获取数组键值
【发布时间】:2016-10-05 03:42:56
【问题描述】:

我正在发出一个简单的请求以从 JSON 文件中获取特定数据,但在获取确切数据时遇到问题。

JSON 文件:

{
    "Something1": {
        "Added": "09-10-2016",
        "Expires": "09-12-2016",
        "Reliability": "78%",
        "Views": "2",
        "Priority": "High"
    },
    "Something2": {
        "Added": "09-11-2016",
        "Expires": "09-13-2016",
        "Reliability": "98%",
        "Views": "5",
        "Priority": "Low"
    }
}

快速代码:

Alamofire.request("https://example.com/args.json").responseJSON { response in
            if let JSON = response.result.value as? [String:AnyObject] {
                print(JSON["Something1"])
            }
        }

使用print(JSON["Something1"]),它会按预期打印Something1 的所有内容,但是当我尝试执行print(JSON["Something1"]["Views"]) 时会抛出错误。我将如何解决这个问题?

【问题讨论】:

  • 我认为您必须将 JSON["Something1"] 转换为 [String:AnyObject]
  • @koropok 这绝对是为我做的!谢谢!

标签: json swift swift3 alamofire


【解决方案1】:

恐怕您的问题与 Alamofire 无关,更多的是使用 Swift 处理 JSON。在您的情况下,当您进行第一个可选绑定时,您将转换为 [String: AnyObject],这是正确的,这意味着您可以下标 JSON["Something1"]

但在那之后,当您尝试再次通过 JSON["Something1"]["Views"] 下标时,编译器不知道 JSON["Something1"] 有什么,因此您不能将其用作字典,而是需要再次将其转换为字典,因为使用像这样的可选绑定嵌套:

if let nestedDictionary1 = JSON["Something1"] as? [String: AnyObject] {
    // access individual value in dictionary

    if let views = nestedDictionary1["Views"] as? Int {
         print(views)
    }
}

您可以在 Apple 的 article 中阅读有关 JSON 工作的更多信息。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2017-07-21
    相关资源
    最近更新 更多