问题描述
我有一个要使用Swift ObjectMapper解析的JSON对象
{
"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]
类型。
当然,每当您尝试访问此数组的元素时,这都包括类型转换过程。 (这很糟糕)