티스토리 뷰

import Cocoa

struct Company: Codable {
  let courseImages: [URL?]

  public init(from decoder: Decoder) throws {
    let values = try decoder.container(keyedBy: CodingKeys.self)

    let nullableEmployees = try values.decode([OptionalObject<URL>].self, forKey: .courseImages) // <1>
//    courseImages = nullableEmployees.compactMap { $0.value } // <2>
    courseImages = nullableEmployees.map { $0.value }
  }
}

public struct OptionalObject<Base: Decodable>: Decodable {
  public let value: Base?

  public init(from decoder: Decoder) throws {
    do {
      let container = try decoder.singleValueContainer()
      value = try container.decode(Base.self)
    } catch {
      value = nil
    }
  }
}

let json = """
{
  "courseImages":   ["https://naver.com", "https://naver.com", ""]
}
"""

do {
  let company = try JSONDecoder().decode(Company.self, from: json.data(using: .utf8)!)
  print(company)
} catch {
  print(error)
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함