이번 포스트에서는 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의 공식 문서를 참조할 수 있습니다.