티스토리 뷰

반응형

안녕하세요 :)

저번시간에 Json을 파싱하는 여러가지 방법에 대해서 알아봤어요.

그게 머얌..? 하시는 분들은

여기에 가셔서 천천히 보시고 오세요 :) 참고로 저 글에 쓰여진 방법은 앱을 만드는 Single View Application이나, Command Line Tool 모두에서 동작합니다.



하지만 오늘은!!  Single View Application에서만 동작하는 방법을 알려드릴려고해요 XD


Single View Application에서 JSON파싱하기



자자 역시나 person.json을...쓰도록 하겠습니다. 

그리고  Single View Application로 프로젝트를 만들어주세요 :)



그리고 person.json다들 저장하셨죠? 저장안하셨다면, 밑 파일을 다운받아서 바탕화면에 저장해주세요 :)

person.json


자..그러면,


저렇게 person.json을 끌어와서 프로젝트에 넣어주세요. 이때, copy if you needed를 꼭 체크해주세요!!

그러면 이제 우리는 person.json에 접근 할 수 있게 되었어요.

그러면, viewDidLoad에서 JSON을 가져와볼게요. 

여기에서도 언급했듯이 JSON을 파싱하는 단계는 크게 4단계로 이루어져있어요.


1. 해당 JSON파일의 내용을 가져온다.

2. 해당 JSON파일에서 가져온 "내용"을 "데이터화"한다.

3. JSONSerialization을 사용하여 Foundation 객체화 시켜주자

4. 파싱


그럼 Single View Application나 Command Line Tool이나;;;;뭐가 달라요? 하실 수 있는데, 우리는 절대경로로 파일에 접근했었죠?

하지만 Single View Application에서는 조금 다른방법을 이용해서 파일에 접근한답니다. 

편의상 viewDidLoad에 모든 작업을 할게요. 


let path = Bundle.main.path(forResource: "person", ofType: "json")


자, 위 코드가 우리가 저번에 했던 방법과 다른것입니다..! 위 코드를 Command Line Tool에서 하면 오류가 날거에요 :)


그리고!! 2번부터 4번까지는 저번에 했던것과 완전히 똑같아요 :)


if let data = try? String(contentsOfFile: path!).data(using: .utf8){

let json = try! JSONSerialization.jsonObject(with: data!, options: []) as! [String : Any]

print(json)

persons = json

}

person.json의 내용을 가져오고, 그 내용을 데이터화하고,  JSONSerialization을 사용해서  Foundation 객체화 시켜줬어요!

이제는 파싱을 해야겠죠? 이것도 완전히 똑같습니다. 

if let person = persons["person"] as? [[String: Any]]{

            for personIndex in person {

                nameArr.append(personIndex["name"] as! String)

                ageArr.append(personIndex["age"] as! String)

                employedArr.append(personIndex["employed"] as! String)

            }

       }

}


혹시모르니, 전체 코드도 적어둘게요 :)



반응형