SwiftyJSON이란?
SwiftyJSON은 Xcode 프로젝트에서 JSON 파일을 더 쉽게 디코딩할 수 있게 해 주는 서드파티 라이브러리입니다.
왜 필요한가?
미리 정의된 타입으로 JSON을 인코딩하고 디코딩하는 것이 모범 사례(best practice)로 여겨집니다. 하지만 내장된 JSONDecoder를 사용할 때의 단점은 동적 JSON을 다루기가 번거롭다는 점입니다. 설령 해낸다고 해도 제대로 처리하기 위해서는 여전히 많은 작업이 필요하므로 이상적이지 않습니다.
동적 JSON 예시
다음과 같은 JSON이 있다고 상상해 보세요:
{ "data": { "variable_1": "some text" }}variable_1 키가 동적으로 변경되는 상황에서는 data.title을 사용해 단순히 데이터를 디코딩할 수 없습니다. 다음번에 data.description이라면 어떨까요?
JavaScript에서는 이렇게 쉽게 할 수 있습니다:
let dynamicKey = 'variable'const json = JSON.parse(JSONObejct)console.log(json.data[`${dynamicKey}_1`])data 뒤의 [] 안에 동적 문자열을 넣기만 하면 값에 접근할 수 있습니다. 하지만 Swift에서는 이렇게 할 수 없습니다.
그래서 SwiftyJSON이 등장합니다.
SwiftyJSON을 사용하여 JSON 파싱하기
SwiftyJSON의 도움을 받으면 다음과 같이 할 수 있습니다:
let json = JSON(data: JSONObejct)let dynamicVar = "variable_1"if let extracted = json[0]["data"]["\(dynamicVar)"].string { // It's wrapped with Optional automatically //Now you got your value inside data.variable_1, just change your variable value for dynamicVar as needed. print(extracted) // some text}JavaScript에서 하는 방식과 거의 같습니다.
직관적이고 간단합니다.
마무리
이 라이브러리는 여전히 동작하지만, 더 이상 유지보수되지 않습니다. 마지막 커밋은 2년 전이었습니다.
그래도 저는 시간과 번거로움을 많이 줄여 주기 때문에 제 프로젝트에서 계속 사용할 것입니다.
JSON을 다룰 때 거의 필수에 가까운 라이브러리입니다.