{
"valueSet": true,
"valueList": [
{},
{
"conId": "003q000000jvwIrAAI"
}
],
"httpCode": 200,
"errorSet": false,
"errorList": []
}
这是我从服务器得到的响应。但事实上我对斯威夫特还不熟悉,所以我不知道如何得到“圆锥形”的值。我正在做下面的代码来获取valueList,但是在那之后,我就不知道如何获取“conId”。我需要在回调中将那个conId作为字符串发送。
let parseResult: [String : AnyObject]
do{
parseResult = try JSONSerialization.jsonObject(with: jsonData, options:.allowFragments) as! [String : AnyObject]
print("\(parseResult)")
} catch {
print("Could not parse data as Json \(String(describing: data))")
return
}
if let valueSet = parseResult["valueSet"] {
let value = valueSet as! Bool
print("statusCode: \(httpResponse.statusCode)")
if let valueList = parseResult["valueList"] {
print(valueList)
if(httpResponse.statusCode == Constants.KNetworkSuccessCode) && (value == true) {
callback(httpResponse.statusCode, value, "")
}else {
callback(httpResponse.statusCode, value, "")
}
}
}
最佳答案
你很接近您需要将valueList强制转换为一个字典数组,如下所示:
if let valueList = parseResult["valueList"] as? [[String: String]] {
然后,您可以在valueList上循环查找所需内容,或者使用
valueList[1]["conId"]
直接访问它。注意,我使用
as? [[String: String]]
来确保valueList作为正确的数据类型返回,否则它将为nil并使if let
失败。我建议您使用as?
而不是as!
,这样您就可以通过这种方式捕捉错误。