iOS/개념 & 개발

[iOS/Swift] SwiftyJson 사용 방법 / Json 파싱(Parsing)

유정주 2021. 9. 26. 00:10
반응형

[iOS/Swift] SwiftyJson 사용 방법 / Json 파싱(Parsing)

안녕하세요. 개발하는 정주입니다.

 

오늘은 iOS 개발을 할 때 JSON 작업을 도와주는 라이브러리에 대해 포스팅하려고 합니다.

바로 SwiftJson입니다. 아래 라이브러리 설명을 한 번 봐주시면 감사하겠습니다.

해당 포스팅은 공부하며 작성한 내용이라 핵심 기초 내용만 다루었습니다.

 

https://github.com/SwiftyJSON/SwiftyJSON

 

GitHub - SwiftyJSON/SwiftyJSON: The better way to deal with JSON data in Swift.

The better way to deal with JSON data in Swift. Contribute to SwiftyJSON/SwiftyJSON development by creating an account on GitHub.

github.com

 

이제 시작합니다.

 


Pod 추가

Podfile에 아래 코드를 넣고 pod install 해줍니다.

pod 'SwiftyJSON', '~> 4.0'

pod install 모습

 

Xcode에서 SwiftyJSON이 보이면 정상적으로 Install이 된 것입니다.

화면 모습은 차이가 있을 수 있습니다.

SwiftyJSON이 추가된 모습

 


SwiftyJSON 사용하기

기본적으로 SwiftyJSON을 사용하기 위해서는 swift 파일에 import 해줘야 합니다.

import SwiftyJSON

 

이번 예제에서는 아래 json을 다루겠습니다.

array형식도 보기 위해 일부러 배열 형태로 가져왔습니다.

[
  {
    "name" : "red2",
    "id" : 1,
    "color" : "FF0000"
  },
  {
    "name" : "green",
    "id" : 2,
    "color" : "00FF00"
  },
  {
    "name" : "blue",
    "id" : 3,
    "color" : "0000FF"
  },
  {
    "name" : "It's #000000",
    "id" : 4,
    "color" : "000000"
  },
]

 


JSON Parsing

 

JSON 객체를 만들기 위해서는 JSON()을 사용하면 됩니다.

JSON Array형식이기 때문에 count를 찍어보면 위 json Array의 길이인 4가 출력됩니다.

let responseJson = JSON(responseValue)
print("responseJson: \(responseJson.count)") //4

 

이제 이 JSON을 파싱 해봅시다.

for (index, subJson): (String, JSON) in responseJson {
    guard let name = subJson["name"].string,
          let code = subJson["color"].string else {
              continue
          }
    
    print("[\(index)] code: \(code) / name: \(name)")
}

 

코드만 봐도 이해가 될 정도로 간단하게 파싱할 수 있습니다.

JSON Array의 element를 JSON형식의 subJSON으로 받아서 [key]를 이용해 value를 가져올 수 있습니다.

따라서 name키의 value를 subJson["name"]으로 가져온 것입니다.

 

value가 string이면 string으로, int면 int로 가져오면 됩니다.

다만 value가 비어있는 경우가 없다고 확신할 순 없으니 guard 문법을 이용해 예외처리를 해주었습니다.

 

이렇게 초간단 JSON Parsing을 배워보았습니다.


마무리 잡담

오늘은 JSON 작업을 도와주는 SwiftyJSON에 대해 알아보았습니다.

하나씩 배우면서 새로운 라이브러리에 대해 배우는 것이 재밌어서 다행입니다.

재미도 없었으면 진즉 때려치웠을 거 같네요.(저 과정에서 에러가 많았음)

 

감사합니다!!

 


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

 

반응형