在我进行api调用后,我有一个以下json
[{"breeds":
[{"weight":{"imperial":"7 - 14","metric":"3 - 6"},"id":"ebur","description":" Something ","child_friendly":4,}]
,"url":"https://cdn2.thecatapi.com/images/YOjBThApG.jpg","width":2838,"height":4518}]
如您所见,存在嵌套的数组,并且此api调用的输出我想获取Id
和url
。我像这样处理我的dataTask输出
let jsonResponse = try? JSONSerialization.jsonObject(with: data!, options: [])
guard let jsonArray = jsonResponse as? [[String: Any]] else {
return
}
所以我可以毫无问题地访问URL print(jsonArray[0]["url"])
,我也可以进行jsonArray[0]["breeds"]
。但是,我无法执行jsonArray[0]["breeds"]["decription"]
或jsonArray[0]["breeds"]["id"]
。因为我收到以下错误Value of type 'Any?' has no subscripts
,所以我怀疑问题出在[[String: Any]]
中。我如何将我的jsonResponse转换更改为数组以获取正确的调用输出
您必须转换任何下标的值
if let breeds = jsonArray.first?["breeds"] as? [[String:Any]],
let description = breeds.first?["description"] as? String {
print(description)
}