안녕하세요 Wody 입니다!
이번 포스팅에서는 Swift에서 JSON 데이터 유형을 다루는 방법 중 하나인
Codable, JSONEncoder, JSONDecoder를 알아보겠습니다.
3가지를 알아보기 위한 공식 문서
Apple Developer - Archives and Serialization
Codable
Codable은 Decodable 과 Encodable을 합친 typealias입니다.
그래서 Codable을 알기 위해선 Encodable & Decodable을 알아야 합니다.
Encodable과 Decodable은 JSON과 같은 데이터 유형을 인코딩, 디코딩 가능하게 만드는 프로토콜입니다.
자세한 사용법은 공식문서에도 친절히 나와있습니다.
기본적으로 Swift에선 인코딩과 디코딩을 구분하고 있기 때문에 Codable을 채택한다면 두 가지 기능을 모두 이용할 수 있습니다.
(반대로 디코드 기능만 필요하다면 Codable를 채택하는게 아니라 Decodable을 채택해야겠죠?)
만약 JSON 데이터 형식이
{
"nama" : "wody",
"age" : 20
}
이런식으로 되어 있다면 우리는 이 JSON 형식을 읽고, 만들 타입을 구현해야 합니다.
struct Person: Codable {
var name: String
var age: Int
}
인코딩을 한다면?
let wody = Person(name: "wody", age: 4)
let encodingJsonData = try? JSONEncoder().encode(wody)
진짜 간단합니다.
Encodable을 채택한 타입의 프로퍼티를 만든 후, JSONEncoder()의 encode 메소드를 이용하면
JSON 데이터 형식의 프로퍼티인 encodingJsonData를 만들 수 있습니다.
디코딩을 한다면?
let decodingData = try? JSONDecoder().decode(Person.self, from: encodingJsonData)
우리가 만들었던 JSON 데이터 encodingJsonData를 활용해서 Decode 타입인 Person 타입으로 디코딩 해봤습니다!
생각보다 간단한 Codable과 Encodable, Decodable이었습니다!
'Swift' 카테고리의 다른 글
[Swift] URLSession (0) | 2021.09.06 |
---|---|
[Swift] ARC와 순환 참조 (0) | 2021.09.02 |
[Swift] Unit Test, TDD (0) | 2021.08.30 |
[Swift] 정규표현식 (0) | 2021.08.23 |
[Swift] String 문자열 대소문자 변경하기 / uppercased(), lowercased() (0) | 2021.08.23 |