IOS(iPhone)

ios swift3 JSONParsing JSON 파싱 하는 방법

알통몬_ 2017. 8. 9. 15:22
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


지난 포스팅에서는 XML파싱하는 방법에 대해 알아보았는데요.


이번 포스팅에서는 JSON 파싱하는 방법에 대해 공부합니다.


먼저 데이터를 담고 있는 .json 파일이 있어야겠죠?

xml 때와 마찬가지로

https://sam.ple.com/data/sample.json

처럼 xml 파일이 존재한다고 가정해보겠습니다.

{

  "school": {

    "data": [

      {

        "grade": "1학년",

        "classes": "5학급",

        "count": "130명"

      },

      {

        "grade": "2학년",

        "classes": "5학급",

        "count": "130명"

      },

      {

        "grade": "3학년",

        "classes": "4학급",

        "count": "130명"

      },

      {

        "grade": "4학년",

        "classes": "4학급",

        "count": "130명"

      },

      {

        "grade": "5학년",

        "classes": "4학급",

        "count": "130명"

      }

    ]

  }

}


예제 코드도 지난 포스팅의 코드를 가져다가 수정하였습니다.

JSON 방식으로 파싱을 할 경우에는 별도로 에러 처리가 필요합니다.

그 부분까지 함께 다룹니다.

import UIKit

class ViewController : UIViewController {

   var datalist = NSDictionary()

   override func viewDidLoad() {

      super.viewDidLoad()

      let baseURL = URL(string: "https://sam.ple.com/data/sample.json" )

     do {

          self.datalist = try JSONSerialization.jsonObject(with:Data(contentsOf : baseURL!), options:                      

                JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary

      }  catch {

           print("Error loading Data")

      }

      print(self.datalist)

      let className = "\(((datalist["school"] as! NSDictionary)["data"] as! NSArray))"

     print("className : \(className)")

    //((datalist["school"] as! NSDictionary)["data"] as! NSArray) 얘를 활용해서 필요한 값들을

    // 필요한 곳에 꺼내어 사용하시면 됩니다.


}



출처: http://altongmon.tistory.com/366 [IOS를 Java] 


JSONObject 의 반환 값은 NSDictionary 또는 NSArray 타입으로만 강제 타입 변환이 가능해요.

print() 문안의 내용이 찍히면

key : value 형식으로 출력이 되는데요.

키, 값, 키, 값 형식으로 되어 있기 때문에 타고 들어가면서 데이터를 가져오면 됩니다.


위 .json 파일에서는 grade, classes, count 의 값들을 가져와야겠죠?

위에서 너무 간단하게 설명했는데요 ㅎㅎ

좀 더 공부해서 추후에 자세히 올려보겠습니다 


이상입니다.


반응형