네트워크에서 Json 데이터 가져오기

2019-08-19
Swift

안녕하세요. 도미닉입니다.

오늘은 네트워크에서 Json 데이터 가져오는 방법에 대해서 알아보겠습니다.

모바일 기기에서 가장 중요한 부분 중에 하나는 네트워크일 것입니다.

요즘에는 스마트폰을 통해 어디서든, 언제든 인터넷에 접속할 수 있습니다.

24시간 온라인 시대가 펼쳐진 것입니다.

그렇다면 아이폰에서 어떻게 json 데이터를 받아올 수 있을까요?

URLSession

스위프트는 네트워크 작업을 위한 URLSession 클래스를 제공합니다.

위에 예제는 랜덤 유저 생성 api 를 사용해 json 을 모델로 변환하는 예제입니다.

https://randomuser.me : 해당 API 에 대한 자세한 설명을 보실 수 있습니다.

API 에서 5명의 유저 정보(성별, 이름, 출신) 을 받아오도록 url 을 작성하였습니다.

이 부분은 API 의 도큐멘트 참고 바랍니다.

코드 설명

  • 25번째 줄
    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in

dataTast 메소드는 url 에 요청을 보냅니다.

뒤에 붙는 data, response, error 에 대해서 알아보겠습니다.

  • data : 서버가 리턴한 데이터입니다.
  • response : HTTP 헤더 및 상태 코드와 같은 응답 메타 데이터를 제공하는 객체입니다.
  • error : 요청이 실패한 이유를 나타내는 오류 객체입니다. 요청이 성공한 경우 nil입니다.

이런 식으로 url 을 통해 데이터와 응답을 받아올 수 있습니다.

  • 33번째 줄
    let userResponse = try decoder.decode(RandomUserResponse.self, from: data)

위에서 생성한 JSONDecoder() 를 이용해서 받아온 데이터를 RandomUserResponse 모델 객체로 변환합니다.

이상으로 URLSession 을 이용해 json 데이터를 가져오는 방법을 정리해봤습니다.

String(contentsOf: URL)

URL 에서 바로 데이터를 받아오는 방법도 있습니다.

예제 소스입니다.

코드 설명

URL 을 string 으로 초기화합니다.
String(contentsOf:url) 을 작성하면 해당 URL 에 있는 데이터를 String 으로 받아옵니다.

이 String 을 적절한 형태로 변환합니다.

4번째 줄 가장 오른쪽에 as? [[String: String]] 는 상황에 따라 올라와있는 json 데이터의 형태에 따라 상이합니다.

정리

이상으로 json 데이터를 받아오는 2가지 방법을 알아봤습니다.

더 알고 계신 방법이나 틀린 부분, 궁금하신 부분 댓글 달아주시면 같이 고민해봅시다.

감사합니다.