1

我有这个我想使用 Swift ObjectMapper解析的 JSON 对象

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

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

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

我试图以各种方式解决它,但一直未能找到有效的解决方案。我怀疑StaticMappable可能会起作用,并且我已将其用于其他多态解析,但是当数组项之一是数字时,则永远不会。

任何帮助,将不胜感激。

4

1 回答 1

1

恐怕使用 映射此数组的唯一方法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 响应,数组的第一个元素是 type Int,第二个元素是 type [String: Any]

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

于 2020-08-27T13:12:19.463 回答