티스토리 뷰
1탄 : 왕초보를 위한 JSON Parsing - 1 (JSON이란?)
2탄 : 왕초보를 위한 JSON Parsing - 2(JSON 가져오기)
그리고 드디어 3탄!! JSON파싱을 해볼거에요 :)
저번시간에 이어서 person.json을 파싱할거기 때문에, 2탄을 먼저 보고 와야겠죠? :) (2탄을 보려면 1탄을 봐야한다는 사실...ㅎㅎ)
왕초보를 위한 JSON Parsing -3 (JSON 파싱)
자, 저번시간에 딱
여기까지 했는데,
이제 저 JSON내용을 "파싱"해야겠죠? 이대로 저 데이터를 쓸 수 없으니까요 :)
자, 이제부터 조금 복잡해질거에요 XD..
그러니까 정신 바짝차리고 따라오셔야해요.
자!! 일단 JSON파싱에 앞서서 가장 중요한 개념을 가르쳐드릴게요.
위 예제를 이용해서 설명드릴건데, 이것만 이해하시면 모든 JSON파일을 파싱하실 수 있게 될거에요 :)
자, person.json을 다시한번 봅시다.
2탄에서도 계속 언급했다시피, person.json의 전체적인 구조는 Swift로 나타내면 ["person": Any ]에요. 1탄에서도 언급했다시피, json은 name-value의 쌍인데, 이 value에는 array, 객체, 기본 데이터타입들이 올 수 있다고 했었죠?
위에서는 array. 즉, 배열이 왔으므로 Swift에서는 Any로 나타낼 수 있겠네요.
그래서 우리는 [String:Any]로 가져왔죠. 하지만, 우리가 진짜 접근하고 싶은 정보는 "person"을 키로가지는 value들, 즉 name, age, employed인데 이 상태로는 접근할 수 없어요.
왜냐? 우리는 전체적인 구조만 가져왔기 때문이죠.
즉!! 우리는 저 "person"의 value. 즉, Any를 파싱해야하는것이죠.
그럼 Any는 뭘로 이루어져있을까요?
Any부분만 보자면, [[ String : String ]]이렇게 나타낼 수 있겠네요.
그러니까 우리는 저 person의 value에 해당하는 것들을 [[ String : String ]]로 가져와야합니다.
if let person = persons["person"] as? [[String: String]]{
persons에는 우리가 아까 person.json에서 가져온 전체적인 내용이 들어있죠? 또한, Swift에서는 Dictionary이름["키값"]으로 value를 접근할 수 있다는 것. 아시죠? json파싱을 위해서는 Swift의 Dictionary구조에 대한 이해가 필수입니다. 만약 헷갈리시거나 아직 잘 모르시는 분들은 여기에가셔서 Swift의 Dictionary에 대해 알아보세요 :)
아무튼, persons의 "person"을 키값으로 하는 value들을 [[String:String]]으로 가져오겠다! 이소리인거죠.
person을 출력해볼까요?
와!! "person"을 키값으로 가지는 value들이 이렇게 쫙 나왔네요. 역시 배열안에 Dictionary가 들어있는 구조이구요.
그럼 이제 어떻게 하면 될까요?
어렵게 생각하지마세요. 배열이 있는데, 그 안에 Dictionary가 2개가 있어요.
위에서도 말씀드렸다시피, Dictionary는 키값을 이용해 값을 얻어올 수 있다고 그랬죠?
그럼 for문을 통해 배열을 돌면서, Dictionary의 키값을 이용해 값을 얻어와봅시다.
그 전에! name, age, 그리고 employed를 저장할 배열을 하나 만들어줄게요.
var ageArr = [String]()
var nameArr = [String]()
var employedArr = [String]()
그리고,
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)
}
}
이렇게 for문을 돌면서 키값을 가지고 값을 얻어오면!
짠!!! 우리가 원하는 정보들을 가져왔네요 :)
어때요? JSON파싱 어려우신가요?
어려우시다면..제가 설명을 잘 못한 탓입니다...ㅠㅠ 만약 4탄으로 돌아올 계획인데 혹시 이때까지 궁금하신점이 있다면
댓글이나 채널을 이용해서 질문해주세요!
오늘도 도움이 되었으면 좋겠어요 ❤️
'Swift' 카테고리의 다른 글
Swift3 ) 2차원배열을 1차원으로 만드는 방법(Flatten a Array of Arrays in Swift) (0) | 2017.08.08 |
---|---|
Swift3 ) 왕초보를 위한 JSON Parsing -4 (JSON을 파싱하는 여러가지 방법) (5) | 2017.07.30 |
Swift3 ) 왕초보를 위한 JSON Parsing - 2(JSON 가져오기) (3) | 2017.07.27 |
JSONSerialization / jsonObject (0) | 2017.07.27 |
Swift ) initializer를 살펴보자 (3) | 2017.07.22 |
- iOS delegate
- Xcode
- Combine
- swift delegate
- swift3
- SwiftUI
- actor
- swift tutorial
- WidgetKit
- FLUTTER
- github
- 피아노
- np-complete
- swift sort
- 스위프트
- Git
- fastlane
- WKWebView
- Swift
- IOS
- swift array
- 제이슨 파싱
- ios 13
- np-hard
- swift 공부
- WWDC
- 스위프트 문법
- 회고
- Accessibility
- UIBezierPath
- Total
- Today
- Yesterday