Open Do-hyun-Kim opened 9 months ago
typealias Codable = Decodable & Encodable
import Foundation
struct introduce: Codable {
var name: String
var age: Int
}
let firstTime: introduce = .init(name: "Alice", age: 12)
let data1 = try? JSONEncoder().encode(firstTime)
let result = String(data: data1!, encoding: .utf8)!
print(result)
import Foundation
struct introduce: Codable {
var name: String
var age: Int
let data = """
{
"name" : "Alice",
"age" : 12
}
""".data(using: .utf8)!
let human = try? JSONDecoder().decode(introduce.self, from: data)
human?.name // "Alice"
human?.age // 12
Swift 데이터를 외부 표현으로 변환하거나 외부 표현으로부터 변환할 수 있는 프로토콜이다.
Encodable 과 Decodable 프로토콜의 type alias 이다
public typealias Codable = Decodable & Encodable
Swift 유형을 이 프로토콜에 맞추면 컴파일러가 JSON과 같은 직렬화된 형식에서 이 유형의 인스턴스를 인코딩/디코딩하는 데 필요한 코드를 합성한다.
Codable에 대하여 설명하시오.
Codable
프로토콜은 자신을 외부 표현으로 변환(Encode) 하거나 외부 표현으로 부터 변환(Decode) 할 수 있는 타입이다.Codable
프로토콜은 Encodable & Decodable로 구성된 유니온 타입(union type) 이다.Codable
은 프로토콜이기 때문에class
,struct
,enum
에 채택이 가능하다.🧐Encoding 이란?
🤔 Encoding 방식
addingPercentEncoding
을 사용해서 해당 글자를 인코딩 해주면 해결 된다.UNICODE Encoding 은 많은 인코딩 방법들 중 기준이 되는 인코딩이다. (**Universal Character Set)
🥹 Decoding 이란?
😊 JSONEncoder Method
JSONSerialization
를 사용하여 JSON 데이터 타입을 생성하였습니다.JSONEncoder
Class를 사용하여인코딩
할 수 있습니다.encode
를 사용하여인코딩
작업을 실행 할 수 있습니다.OutputFormatting
타입 프로퍼티를 사용하여 출력 설정을 지정할 수 있습니다.🥳 JSONEncoder 제공 Method, properties
🫣 JSONDecoder Method
JSONDecoder
Class를 사용하여디코딩
할 수 있습니다.JSONDecoder
Class에서 제공되는decode
Method를 사용하여디코딩
작업을 실행 할 수 있습니다.JSONDecoder
Class에서 제공되는keyDecodingStrategy
를 사용하여 Key 전략을 유연하게 변환 시킬 수 있습니다.keyDecodingStrategy
을 지정하지 않으면 default 값으로 사용되는 전략입니다.📝 참고 사이트