使用我正在使用的API,根据调用是否成功,有1个API端点可以返回完全不同的响应的情况。对于success,API端点在根中返回一个请求的对象数组,如下所示:
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
...
]
我通常用try JSONDecoder().decode([Object].self, from: data)
进行解码
如果发生错误,API端点将返回完全不同的内容,如下所示:
{
"error": "value1",
"message": "value2",
"status": "value3"
}
并且try JSONDecoder().decode([Object].self, from: data)
的解码通常会失败。
现在,我的问题是,有一种方法可以解码错误响应密钥,这种方式(我会说不是通常构建的API),WITHOUT创建-我称之为-名为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'
。也许不可能那样做,所以任何其他甚至完全不同的建议都将受到欢迎。
您可以尝试对[Object]进行解码,如果失败,请使用错误键对另一个结构进行解码。