Кодируемый Декодируемый JSON от String до Enum - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь декодировать JSON, используя кодируемый. Мне интересно, есть ли способ настроить codable так, чтобы он возвращал typeCustomer типа HelloModel как тип TypeOfCustomerEnum вместо String?

Пример:

{
"name": "Hello",
"lastName": "World",
"typeOfCustomer": "Student"
}

enum TypeOfCustomerEnum: String {
   let Student = "Student"
   let Paying = "Paying"
   let NonPaying = "Nonpaying"
}

struct HelloModel: Codable {
   let name: String
   let lastName: String
   let typeOfCustomer: TypeOfCustomerEnum // JSON for TypeOfCustomer is a String but TypeOfCustomer wanted
}

1 Ответ

2 голосов
/ 24 февраля 2020

Тип TypeOfCustomerEnum также должен соответствовать Codable, а регистры (должны быть регистры) должны быть в нижнем регистре, а литеральные строки должны соответствовать JSON значениям

enum TypeOfCustomerEnum: String, Codable {
   case student = "Student"
   case paying = "Paying"
   case nonPaying = "NonPaying"
}

struct HelloModel: Codable {
   let name: String
   let lastName: String
   let typeOfCustomer: TypeOfCustomerEnum 
}
...