Как l oop через каждый JSON объект с Swifty JSON и получать значения от каждого объекта? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь использовать Swifty JSON с Spoonacular API, чтобы создать приложение с рецептами.

Я начинающий разработчик, поэтому у меня проблемы с повторением результатов ответа JSON . Я комбинирую Swifty JSON с 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"
},

Я хочу go просмотреть каждый результат рецепта и получить идентификатор и заголовок. Как мне это сделать?

При поиске в Google большинство людей предлагает что-то вроде:

            for (key, subJson) in json {
            let id = json["results"][index]["id"].stringValue
            let title = json["results"][index]["title"].stringValue
            print(id)
            print(title)
        }

Как видите, у меня проблемы с доступом к каждому индексу в ответе JSON. Приведенный выше код кажется l oop через каждый ключ (в этом случае есть 4, id, title, image и imageType), поэтому он не будет go через каждый индекс.

Я просто имею проблемы с выяснением того, как перебирать каждый индекс, когда я считаю, что JSON, созданный из данных ответа, не является обычным массивом

1 Ответ

0 голосов
/ 25 мая 2020

В вашем случае должно работать что-то вроде этого:

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

Однако, как уже упоминалось в @Frankenstein, вам, скорее всего, лучше создать Decodable модели в сочетании с JSONDecoder .

...