Структура JSON в зависимости от комманды REST API


#1

Может кто-нибудь сталкивался с подобным?

Есть энум с коммандами для REST API

enum Command: String {
case authorize, config, …
}

Есть функция, которая отправляет все запросы. Когда приходит ответ от сервера, я использую JSONDecoder().decode, а в качестве первого аргумента (type: Decodable.Protocol) хотел бы использовать структуру в зависимости от комманды. Для каждой комманды есть своя структура, например:

struct Authorize: Codable {
let accessToken: String
let expiration: Double
}

struct Config: Codable {
…
}

Хотелось бы в энуме прописать что-нибудь вроде этого

func JSONStruct() -> Decodable.Type {
switch self {
case .authorize: return Authorize.self
case …
}
}

И использовать вот так

//command: Command

let json = try JSONDecoder().decode(command.JSONStruct(), from: data)

Но если делать все как написано, то выходит ошибка Cannot invoke 'decode' with an argument list of type '(Decodable.Type, from: Data)' Есть другие варианты?