Swift Decodable,端点返回完全不同的类型

问题描述 投票:0回答:1

使用我正在使用的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复数对象,它将具有可选属性errormessagestatus,例如objects。我的想法扩展到数组where Element == Object,并以某种方式尝试对errormessagestatus进行解码,但是我遇到了Conformance of 'Array<Element>' to protocol 'Decodable' was already stated in the type's module 'Swift'。也许不可能那样做,所以任何其他甚至完全不同的建议都将受到欢迎。

swift codable decodable swift-extensions jsondecoder
1个回答
0
投票

您可以尝试对[Object]进行解码,如果失败,请使用错误键对另一个结构进行解码。

© www.soinside.com 2019 - 2024. All rights reserved.