我是新手使用Alamofire并遇到了一个问题。我能够运行以下代码来打印API端点的所有数据。
Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in
if let JSON = response.result.value {
print(JSON)
}
}
问题在于,当我运行时:
Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in
if let JSON = response.result.value {
print(JSON["firstkey"])
}
}
我收到错误:
类型'Any'没有下标成员
我不知道为什么会发生这种错误,好像我正在正确访问数据。任何帮助都会很棒,谢谢!
我尝试使用两者进行格式化:
print(JSON [“firstkey”] as String)
和
打印(JSON [“firstkey”]为[String:Any]
但他们仍然会犯同样的错误。
这是我的终端上的JSON:
{
"firstkey":"it worked!",
"secondkey":["item1", "item2", "item3"]
}
答案 0 :(得分:1)
这很简单。你只需要强制转换(作为!)你的JSON。所以将你的代码改为这个,它会起作用:
Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in
if let JSON = response.result.value {
let json = JSON as! [String: Any]
print(json["firstkey"])
}
}
编辑1: 正如您在评论中所说,您使用的是SwiftyJSON包。示例代码如下:
Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in
if let value = response.result.value {
let json = JSON(value)
print(json["firstkey"].stringValue)
}
}
Alamofire.request("https://mmcalc.com/api").responseJSON { response in
if let value = response.result.value {
let json = JSON(value)
print(json.arrayValue[0]["uniqueUsers"].stringValue)
}
}
答案 1 :(得分:0)
你试图通过获取对象来获取值,试试这个:
virtual
希望它能奏效!
答案 2 :(得分:0)
您应该添加!在)之前的代码末尾,以强制解开值
Alamofire.request("http://codewithchris.com/code/afsample.json").responseJSON { response in
if let JSON = response.result.value {
let json = JSON as! [String: Any]
print(json["firstkey"]!)
}
}