티스토리 뷰

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
링크
«   2024/10   »
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 29 30 31
글 보관함