Swift 3 JSON错误?
我似乎无法编译我的代码,无论我如何摆弄它。我想我需要另一个视角 在“let image=data[“images”]as![String:AnyObject] xcode一直告诉我“不能用'String'类型的索引为'[[String:AnyObject]]'类型的值下标”Swift 3 JSON错误?,json,swift,Json,Swift,我似乎无法编译我的代码,无论我如何摆弄它。我想我需要另一个视角 在“let image=data[“images”]as![String:AnyObject] xcode一直告诉我“不能用'String'类型的索引为'[[String:AnyObject]]'类型的值下标” 首先,在Swift 3中,JSON字典是[String:Any] 您的错误(开发人员错误)是使用数组数据作为循环的索引变量。 将下划线替换为anItem,并使用anItem[“images”] 注意:键images表示多个项
首先,在Swift 3中,JSON字典是
[String:Any]
您的错误(开发人员错误)是使用数组数据
作为循环的索引变量。
将下划线替换为anItem
,并使用anItem[“images”]
注意:键
images
表示多个项目,因此值也可以是一个数组。正如Martin所说,您的数据
是一个字典数组。因此,反复阅读这些词典:
if let arrayOfData = json["data"] as? [[String : Any]] {
for individualData in arrayOfData {
if let image = individualData["images"] as? [String : Any],
let standardResolution = image["standard_resolution"] as? [String : Any],
let url = standardResolution["url"] as? String {
// now do something with URL
print(url)
}
}
}
我建议您避免使用
代码>强制投射/展开。当处理来自远程源的数据时,您应该更优雅地处理其中一个下标无法检索到您期望的数据的情况。这既不是Swift 3也不是JSON错误<代码>数据
是一组字典。您已经对其条目进行了迭代,但由于我不知道的原因,请使用通配符\uuu
作为循环变量。首先检查数组或字典。否则,请使用此易于处理的json数据。@BHAVIKPANCHAL因此我必须使用[[String:AnyObject]]来打印数据您是否获得json中的值?@BHAVIKPANCHAL是的,它是JSONA根据,images
是一个字典,而不是数组。@Rob感谢您的澄清。命名不直观。
let json = try JSONSerialization.jsonObject(with: data!) as! [String : Any]
if let data = json["data"] as? [[String : Any]] {
for anItem in data {
let image = anItem["images"] as! [String : Any]
let standardResolution = image["standard_resolution"] as! [String : Any]
let url = standardResolution["url"] as! String
print(url)
}
}
if let arrayOfData = json["data"] as? [[String : Any]] {
for individualData in arrayOfData {
if let image = individualData["images"] as? [String : Any],
let standardResolution = image["standard_resolution"] as? [String : Any],
let url = standardResolution["url"] as? String {
// now do something with URL
print(url)
}
}
}