Codable은 Swift에서 사용되는 프로토콜로, 데이터를 인코딩하거나 디코딩할 때 사용되는 일련의 기능을 정의합니다.
Codable을 채택한 타입은 JSON, Property List 및 다른 형식의 데이터를 쉽게 변환하고 다룰 수 있습니다.
Encodable은 타입을 인코딩할 수 있는 기능을 제공합니다. 이 프로토콜을 준수하는 타입은 JSON이나 다른 형식으로 인코딩될 수 있습니다.
// en code = 제이슨으로 만들기
Decodable은 타입을 디코딩할 수 있는 기능을 제공합니다. ""
// de code = 제이슨을 클래스, 스트럭트로 바꾸기
Codable은 Encodable, Decodable 프로토콜을 모두 채택한 것으로, 타입이 인코딩 및 디코딩 양쪽에서 모두 사용될 수 있음을 의미합니다.
struct Person: Codable {
var name: String
var age: Int
}
let person = Person(name: "Alice", age: 30)
>> // Encoding (인코딩)
let encoder = JSONEncoder()
if let encodedData = try? encoder.encode(person) {
if let jsonString = String(data: encodedData, encoding: .utf8) {
print(jsonString)
}
}
>> // Decoding (디코딩)
let json = """
{
"name": "Bob",
"age": 25
}
"""
let jsonData = Data(json.utf8)
let decoder = JSONDecoder()
if let decodedPerson = try? decoder.decode(Person.self, from: jsonData) {
print(decodedPerson.name) // "Bob"
print(decodedPerson.age) // 25
}
참고(출처) : 개발하는 정대리, 야곰(Swift5)