Geon

Json Parsing with optional key 본문

SwiftUI/지식 창고

Json Parsing with optional key

jgkim1008 2023. 2. 2. 17:27

JSON 파싱시 특정 Key를 아예 전달해주지 않을때 Decoding Error를 회피하는 방법

 

 

예시

정상 요청
data: {test1: "123", test2:"123"}, message: "", status: "SUCCESS"
비정상 요청
message: "잘못된 요청입니다.", status: "FAIL"

 

해결 방법

final class ExampleDTO: Codable {
    var data: Dummy?
    var message, status: String?
    
    private enum CodingKeys: String, CodingKey{
        case data, message, status
    }

    required init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        self.data = (try? container.decode(Dummy.self, forKey: .data)) ?? Dummy()
        self.message = try container.decode(String.self, forKey: .message)
        self.status = try container.decode(String.self, forKey: .status)
    }
    
    final class Dummy: Codable {
    	var test1: String?
        var test2: String?
}

* decoder에서 키를 매핑시킬때 try? 처리

'SwiftUI > 지식 창고' 카테고리의 다른 글

TextEditor에 PlaceHolder 적용  (0) 2022.12.30
SwiftUI 텍스트 크기 지정  (0) 2022.12.14