我正在提出一个从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一样打印Something1的所有内容,但是当我尝试print(JSON["Something1"]["Views"])
时会抛出错误。我该如何解决这个问题?
答案 0 :(得分:3)
你的问题与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)
}
}
您可以在此article Apple中了解有关JSON工作的更多信息。
我希望这对你有所帮助。