Swift ObjectMapper 映射具有多种类型值的数组 - 混合数字和复杂对象

Swift ObjectMapper mapping an array with multiple types of values - numbers and complex objects mixed

我有这个 JSON 对象,我想使用 Swift ObjectMapper

来解析
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        0,
        {
            "data": {
                "username": "myuser"
            },
            "expires": 300,
            "timeout": 300,
            "ubus_rpc_session": "some_value"
        }
    ]
}

我不知道如何正确解析包含混合内容的内部数组,特别是这部分:

[ 0, { /* ... */ } ]

我尝试过各种方法来解决它,但一直未能找到可行的解决方案。我怀疑 StaticMappable 可能会起作用,并且我已经将它用于其他多态解析,但从来没有在数组项之一是数字时使用过。

如有任何帮助,我们将不胜感激。

恐怕使用 ObjectMapper 映射此数组的唯一方法是 [Any]:

class Result: Mappable {
    var id: Int?
    var jsonrpc: String?
    var result: [Any]?
    
    required init?(map: Map) {}
    
    func mapping(map: Map) {
        id <- map["id"]
        jsonrpc <- map["jsonrpc"]
        result <- map["result"]
    }
}

这样,对于这个特定的 json 响应,数组的第一个元素将是 Int 类型,第二个元素将是 [String: Any].[=15= 类型]

当然,这包括在您尝试访问此数组的元素时的类型转换过程。 (这很糟糕)