我正在尝试将SwiftyJSON与Spoonacular API结合使用来做一些食谱应用程序。
我是一名初学者,所以在遍历JSON响应结果时遇到了麻烦。我将SwiftyJSON与Alamofire结合在一起。
API结果如下:
"results": [
{
"id": 548450,
"title": "Sweet Potato Kale Pizza with Rosemary & Red Onion",
"image": "https://spoonacular.com/recipeImages/548450-312x231.jpg",
"imageType": "jpg"
},
{
"id": 759293,
"title": "Deep-Dish Skillet Pizza",
"image": "https://spoonacular.com/recipeImages/759293-312x231.jpg",
"imageType": "jpg"
},
我想查看每个配方结果,并获取ID和标题。我该怎么做?
通过谷歌搜索,大多数人建议如下:
for (key, subJson) in json {
let id = json["results"][index]["id"].stringValue
let title = json["results"][index]["title"].stringValue
print(id)
print(title)
}
如您所见,我在访问JSON响应中的每个索引时遇到麻烦。上面的代码似乎遍历每个键(在本例中为4,id,title,image和imageType),因此不会遍历每个索引。
当我认为从响应数据创建的JSON不是普通数组时,我很难弄清楚如何遍历每个索引
答案 0 :(得分:0)
在您的情况下,这样的方法应该起作用:
let results = json["results"].arrayValue
let identifiers = results.map { $0["id"].stringValue }
let titles = results.map { $0["title"].stringValue }
不过,就像已经提到的@Frankenstein一样,您最好与Decodable结合创建JSONDecoder模型。