[swift] Swift로 HTTP 요청에서 JSON 파싱하기

이번 포스트에서는 Swift를 사용하여 HTTP 요청에서 JSON을 파싱하는 방법에 대해 알아보겠습니다. JSON 파싱은 웹 서비스와의 상호작용에서 자주 사용되는 중요한 작업입니다. 이를 통해 서버로부터 받은 데이터를 애플리케이션 안에서 유용한 형식으로 변환할 수 있습니다.

URLSession을 사용하여 HTTP 요청 보내기

Swift에서 HTTP 요청을 보내려면 URLSession 클래스를 사용합니다. 다음은 GET 메서드를 사용하여 HTTP 요청을 보내는 예시입니다.

import Foundation

func sendHttpRequest(completion: @escaping (Data?, URLResponse?, Error?) -> Void) {
    let urlStr = "http://example.com/api/data"
    if let url = URL(string: urlStr) {
        let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
            completion(data, response, error)
        }
        task.resume()
    }
}

위의 코드에서 sendHttpRequest 함수는 URLSession.shared.dataTask(with:completionHandler:) 메서드를 사용하여 HTTP 요청을 보내고 응답을 처리합니다. 요청이 성공하면 data, response, error 매개변수가 전달됩니다.

JSON 파싱하기

HTTP 요청을 수행한 후에는 받은 데이터를 JSON으로 파싱해야합니다. Swift에서 JSON을 파싱하기 위해 Foundation 프레임워크의 JSONSerialization 클래스를 사용할 수 있습니다. 다음은 JSON을 파싱하는 예시입니다.

func parseJsonData(data: Data) {
    do {
        if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
            // JSON 파싱 결과 사용하기
            let name = json["name"] as? String
            let age = json["age"] as? Int
            // ...
        }
    } catch let error {
        print("JSON 파싱 에러: \(error.localizedDescription)")
    }
}

위의 코드에서 JSONSerialization.jsonObject(with:options:) 메서드를 사용하여 Data 객체를 JSON으로 파싱합니다. 파싱 결과는 [String: Any] 타입으로 반환됩니다. 이후 필요한 데이터를 형변환하여 사용할 수 있습니다.

예외 처리하기

JSON 파싱 도중에 예외가 발생할 수 있으므로, 파싱 작업은 try-catch 문으로 감싸야합니다. 예외가 발생하면 catch 블록이 실행되고 해당 예외를 처리할 수 있습니다.

요약

이번 포스트에서는 Swift에서 HTTP 요청에서 JSON을 파싱하는 방법에 대해 알아보았습니다. URLSession을 사용하여 HTTP 요청을 보내고, JSONSerialization을 사용하여 받은 데이터를 JSON으로 파싱할 수 있습니다. JSON 파싱은 웹 서비스와의 상호작용에서 매우 중요하므로, Swift 개발자라면 이 기능을 잘 숙지하고 있어야합니다.

더 많은 세부 내용과 예제 코드는 Apple의 공식 문서를 참조할 수 있습니다.