[swift] ObjectMapper와 Codable 간의 차이점은?

Swift에서는 JSON 데이터를 객체로 변환하거나, 객체를 JSON 데이터로 변환하는 작업이 필요할 때가 많습니다. 이를 위해 Swift 커뮤니티에서는 여러 가지 라이브러리와 프레임워크를 제공하고 있습니다. 그 중에서 ObjectMapper와 Codable은 가장 많이 사용되는 두 가지 방법입니다.

ObjectMapper

ObjectMapper는 Swift에서 JSON 데이터와 Swift 객체 간의 매핑을 간편하게 처리할 수 있도록 도와주는 라이브러리입니다. ObjectMapper를 사용하면 JSON 데이터를 기반으로 Swift 객체를 생성하거나, 반대로 Swift 객체를 JSON 데이터로 변환할 수 있습니다.

ObjectMapper를 사용하기 위해서는 각각의 Swift 클래스나 구조체에 대해 ObjectMapper의 Mappable 프로토콜을 구현해야 합니다. Mappable 프로토콜의 구현을 통해 ObjectMapper는 JSON 데이터와 객체 간의 매핑을 수행할 수 있습니다.

ObjectMapper의 장점은 유연성과 커스터마이징이 가능하다는 점입니다. 가령, JSON 데이터와 Swift 객체 간의 일부 매핑을 무시하고 싶은 경우에는 ignoredProperties를 사용하여 해당 프로퍼티를 제외할 수 있습니다.

하지만 ObjectMapper를 사용할 때는 일부 번거로운 작업이 있을 수 있습니다. JSON 데이터의 특정 키와 Swift 객체의 프로퍼티명이 다른 경우에는 수동으로 매핑 작업을 수행해야 하며, Optional 값에 대한 처리도 추가로 해줘야 합니다.

Codable

Codable은 Swift 4에서 추가된 프로토콜로, JSON 데이터와 Swift 객체 간의 매핑을 위한 간단하고 쉬운 방법을 제공합니다. Codable을 사용하면 ObjectMapper처럼 번거로운 작업 없이 JSON 데이터와 Swift 객체 간의 매핑을 자동으로 처리할 수 있습니다.

Codable을 사용하기 위해서는 각각의 Swift 클래스나 구조체에 대해 Codable 프로토콜을 구현해야 합니다. 이후에는 JSONDecoderJSONEncoder를 사용하여 JSON 데이터를 객체로 변환하거나, 객체를 JSON 데이터로 변환할 수 있습니다.

Codable은 ObjectMapper에 비해 간단하고 깔끔한 문법을 제공한다는 장점이 있습니다. 또한, Swift 4 부터는 Codable을 사용하면 JSON 데이터의 특정 키와 Swift 객체의 프로퍼티명이 다른 경우에도 자동으로 매핑해줍니다.

하지만 Codable을 사용할 때 주의할 점은 옵셔널 값에 대한 처리입니다. ObjectMapper에서는 Optional 값을 제외하고 매핑할 수 있지만, Codable은 Optional 값을 포함하여 매핑해야 합니다.

결론

ObjectMapper와 Codable은 Swift에서 JSON 데이터와 Swift 객체 간의 매핑을 처리하기 위한 라이브러리와 프로토콜입니다. 각각의 장단점이 있으며, 상황과 개발자의 선호도에 따라 선택하면 됩니다.

ObjectMapper는 유연성과 커스터마이징이 가능하여 복잡한 매핑 작업을 처리하기에 적합합니다. 반면에 Codable은 간단하고 깔끔한 문법을 제공하여 간편하게 매핑 작업을 수행할 수 있습니다.

이러한 차이점을 고려하여 프로젝트의 요구사항과 개발 환경에 따라 ObjectMapper 또는 Codable을 선택하여 사용하면 됩니다.


참고문서: