我正在开发一个项目,我正在获取一个再次包含字典的数组字典
我的Json回应是
{
"code": 200,
"status": "OK",
"success": "true",
"message": "success",
"data": {
"vehicletypeData": [
{
"vehicle_type_id": "1",
"vehicle_type": "Any"
},
{
"vehicle_type_id": "11",
"vehicle_type": "Bike"
}
]
}
}
我正在解析像
这样的数据 if response.success {
let resObj = response.responseObject as! Dictionary<String, Any>
let catArray = resObj["data"] as! Dictionary<String,Array<Dictionary<String,Any>>> // Crashes here
let vehicleData = catArray["vehicletypeData"] as! Array<Dictionary<String, Any>>
for vehicle in vehicleData {
self.jobCategories.append(PreJobVehicleData.mj_object(withKeyValues: vehicle))
}
}
我试图在我的模型中解析它
我在这里得到一个错误 - 无法将'__NSArrayM'(0x109b82e00)类型的值转换为'NSDictionary'(0x109b832d8)
任何帮助都会感激不尽。
答案 0 :(得分:1)
不要说
resObj["data"] as! Dictionary<String,Array<Dictionary<String,Any>>>
这太具体了。只是说
resObj["data"] as! [String:Any]
你知道当你通过该词典中的键获得某些东西时,它将是一个数组,但是当你来到它时,你可以从字面上穿过那个桥。
同样的规则适用于您的其他演员阵容。只需使用最广泛的最简单类型转换为Swift字典或数组。
(请注意,所有这些都将在Swift 4中解决,您可以在其中构建JSON结构的知识,直到您的提取。)
答案 1 :(得分:0)
当您分别解析节点时,无论如何都要避免转换为(超过两个级别)嵌套类型。
根据错误消息,键AveOut
的值似乎是一个数组(data
)
Array<Dictionary<String, Any>>
这意味着JSON输出错误,我不知道下一步是什么......