본문 바로가기

코딩의 유익함/스위프트(Swift)

Swift(스위프트) - 웹 서버에서 json 형태의 데이터 가져오기

json 형태의 데이터 추출

웹 서버에서 제공하는 정보(데이터)를 가져오고 싶을 때가 있습니다. 예를 들면 구글이나 네이버 등 특정 기업에서 제공하는 API를 통해서 가져올 수 있는데요. 그 방법을 차근차근 하나씩 알아보겠습니다. (저도 공부하는 입장이라서요.^^)

 

먼저 스위프트의 기본적인 문법을 알고 있다는 가정하에 코드를 작성해보겠습니다. 모르시는 부분은 댓글 남겨주시면 제가 아는 지식 범위 안에서 답변을 드려보겠습니다.

 

1. NewsAPI 검색 -> 사이트 가입 후 -> 스크롤 맨 아래 News sources -> 대한민국 선택 -> 아래와 같은 json 형식의 데이터 확인

 

2. 1 의 데이터를 가져오기 위한 코드 작성

// json 형태의 데이터로 정보를 제공하는 사이트 URL을 String 변수에 할당

var jsonDataURL: String = "http://newsapi.org/v2/top-headlines?country=kr&category=business&apiKey=자신만의 고유 값"

 

// URL에 접속하여 요청한 데이터, 응답 값, 에러정보 등을 받는다.

let task = URLSession.shared.dataTask(with: URL(string: jsonDataURL)!) { (data, response, error) in

       if let JsonData = data

       {

           do

           {

                // URL 요청을 통해 받은 데이터를 json 형태로 되어 있지 않아 직렬화를 통해 변경해준다. json 데이터는 Dictionary<String, Any>의 구조를 가진다.

               if let json = try JSONSerialization.jsonObject(with: JsonData, options: []) as? Dictionary<String, Any>

               {

                        // articles는 json 형식의 데이터를 배열 형태로 가지고 있다.

                     if let articles = json["articles"] as? Array<Dictionary<String, Any>>

                     {

                         // 배열 변수가 가진 enumerated 함수의 기능은 순서(0,1,2...), 값(순서에 해당하는 값) -> (_, val)

                        for (_, val) in articles.enumerated()

                        {

                            if let title = val["title"] as? String

                            {

                                print(title)

                            }

                        }

                    }

               }

           }

           catch {}

       }

}

task.resume()

위의  URL에서 자신만의 고유 값은 직접 사이트 가입하신 후 들어가시면 보이게 됩니다. 

 

3. 실행 결과 확인

위 내용은 센치한 개발자님의 유튜브 영상을 보고 공부하여 작성하였습니다.