[swift] SwiftyJSON을 사용하여 Alamofire 응답에서 배열 데이터를 파싱하는 방법

Alamofire는 iOS의 네트워크 통신을 간편하게 처리할 수 있는 라이브러리입니다. 데이터를 요청하고 응답을 받는 과정에서 JSON 데이터를 파싱해야 할 때가 있습니다. 이때 SwiftyJSON 라이브러리를 함께 사용하면 JSON 데이터를 쉽게 다룰 수 있습니다. 이번 튜토리얼에서는 SwiftyJSON을 사용하여 Alamofire 응답에서 배열 데이터를 파싱하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저 프로젝트에 SwiftyJSON과 Alamofire를 설치해야 합니다. Cocoapods를 사용한다면 Podfile에 다음과 같은 라인을 추가합니다.

pod 'SwiftyJSON'
pod 'Alamofire'

설치가 끝난 후에는 프로젝트를 업데이트해줍니다.

코드 작성하기

먼저 Alamofire와 SwiftyJSON을 import합니다.

import Alamofire
import SwiftyJSON

다음으로, Alamofire를 사용하여 JSON 데이터를 받아오는 API 요청을 보내는 함수를 작성합니다. 이 함수는 completion closure를 통해 API 응답 데이터를 전달할 것입니다.

func fetchData(completion: @escaping (JSON) -> Void) {
    Alamofire.request("https://api.example.com/data").responseJSON { response in
        if let value = response.result.value {
            let json = JSON(value)
            completion(json)
        }
    }
}

위의 코드에서는 Alamofire를 사용하여 “https://api.example.com/data” 주소로 GET 요청을 보내고, 응답 데이터가 성공적으로 도착하면 SwiftyJSON을 사용하여 JSON 객체로 변환한 뒤 completion closure를 호출하여 응답 데이터를 전달합니다.

이제 fetchData 함수를 호출하고 응답 데이터를 처리하는 코드를 작성합니다.

fetchData { json in
    if let dataArray = json.array {
        for data in dataArray {
            // 데이터 처리 로직
            let name = data["name"].stringValue
            let age = data["age"].intValue
            
            print("Name: \(name), Age: \(age)")
        }
    }
}

위의 코드에서는 fetchData 함수를 호출한 후에 응답 데이터인 json을 배열로 변환하고, 각각의 데이터를 순회하면서 원하는 필드를 추출합니다. 위의 예시에서는 nameage 필드를 가져와 출력하고 있습니다.

마무리

이제 SwiftyJSON을 사용하여 Alamofire 응답에서 배열 데이터를 파싱하는 방법을 알아보았습니다. SwiftyJSON은 더 다양한 JSON 데이터 다루는 방법을 제공하고 있으니 필요에 따라 공식 문서를 참고하여 활용해보시기 바랍니다.

참고 자료