Json 在Swift中从数组中取出物品
我是Swift的新手,花了几个小时试图从JSON响应中提取Json 在Swift中从数组中取出物品,json,swift,Json,Swift,我是Swift的新手,花了几个小时试图从JSON响应中提取photo\uURL键 我用它来阅读JSON: let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) 然后: 以下是我(失败)拔出钥匙的尝试: init(eventsDictionary: [String : Any]) { //photoUrl = eventsDictionary[Event
photo\uURL
键
我用它来阅读JSON:
let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
然后:
以下是我(失败)拔出钥匙的尝试:
init(eventsDictionary: [String : Any]) {
//photoUrl = eventsDictionary[EventKeys.photoUrl] as? String
let groups: NSArray = eventsDictionary["groups"] as! NSArray
let url: String = groups[0]
print("THIS IS YOUR RETURNED PHOTO URL--\(url)--END OF RETURNED PHOTO URL")
}
我将“[String:Any]”更改为[String:AnyObject],现在我得到了这个。。。
向NSArray强制转换任何内容时出现问题。只需使Init方法接受[String:AnyObject]。但是,这里最好使用Array而不是NSArray尝试使用以下代码获取url
let firstObj = groups[0] as! [String: String] // use if let to unwrap is better
let url = firstObj["photo_url"]
要从照片中的json文件中获取“photo_url”
看起来是这样的:
init(eventsDictionary: [String : Any]) {
if let groups = eventsDictionary["groups"] as? [NSDictionary]{
/*
// Get All URL
var urls : [String] = []
for group in groups{
if let url = group.value(forKey: "photo_url"){
urls.append(url)
}
}
*/
// Groups[0] url
let url: String = groups[0].value(forKey: "photo_url") as! String
print("THIS IS YOUR RETURNED PHOTO URL--\(url)--END OF RETURNED PHOTO URL")
}
}
您需要将json读取为“[String:Any]
if let eventsDictionary = json as? [String: Any] {
let upcomingEvents = UpcomingEvents(eventsDictionary: eventsDictionary)
completion(upcomingEvents)
}
然后,像这样初始化您的UpcomingEvents
模型
init(eventsDictionary: [String : Any]) {
let groups: NSArray = eventsDictionary["groups"] as! NSArray
let group1 = groups[0] as! NSDictionary
let photoURL = group1["photo_url"] as! String
print(photoURL)
}
您的JSON响应是什么样子的?您会遇到什么错误?为什么要使用
NSArray
?这没有什么好的理由。改为将数组强制转换为Swift数组类型(可能是[String]
,因为这似乎是数组包含的内容)。另外,使用作为?
而不是作为我添加了一个响应的屏幕截图,我做了您建议的更改,但我仍然无法提取最后一张照片的urlfield@Verty00这是因为.mutableContainer选项。阅读有关序列化选项的更多信息。在这里,你不需要忘记说,第一次张贴的答案的建议是非常好的为您的编程。
init(eventsDictionary: [String : Any]) {
let groups: NSArray = eventsDictionary["groups"] as! NSArray
let group1 = groups[0] as! NSDictionary
let photoURL = group1["photo_url"] as! String
print(photoURL)
}