С API, с которым я работаю, у меня есть случай, когда 1 конечная точка API может возвращать совершенно разные ответы, в зависимости от того, был ли вызов успешным или нет.
В случае успеха , APIКонечная точка возвращает массив запрашиваемых объектов в корне, что-то вроде этого:
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
...
]
, который я обычно декодирую с помощью try JSONDecoder().decode([Object].self, from: data)
В случае ошибки , API Endpoint возвращает что-то совершенно другое, выглядит так:
{
"error": "value1",
"message": "value2",
"status": "value3"
}
и декодирование с помощью try JSONDecoder().decode([Object].self, from: data)
обычно завершается неудачей.
Теперь, мой вопрос ,Есть ли способ, чтобы декодировать ключи ответа на ошибку, в этом виде (я бы сказал, не так нормально с архитектурой API), БЕЗ создания-то, что я называю- множественное число объект с именем Objects
, который будет иметь необязательные свойства error
, message
, status
, и, например, objects
.
. Мне пришло в голову кое-что расширить массив where Element == Object
и каким-то образом попытаться декодировать error
, message
, status
, но я бью Conformance of 'Array<Element>' to protocol 'Decodable' was already stated in the type's module 'Swift'
. Может быть, это даже невозможно сделать таким образом, поэтому любые другие, даже совершенно другие, предложения будут очень кстати.