如何使用SwiftyJSON遍历每个JSON对象,并从每个对象获取值?

时间:2020-05-25 11:14:24

标签: json swift loops alamofire

我正在尝试将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不是普通数组时,我很难弄清楚如何遍历每个索引

1 个答案:

答案 0 :(得分:0)

在您的情况下,这样的方法应该起作用:

let results = json["results"].arrayValue
let identifiers = results.map { $0["id"].stringValue }
let titles = results.map { $0["title"].stringValue }

不过,就像已经提到的@Frankenstein一样,您最好与Decodable结合创建JSONDecoder模型。