{
"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!,这样您就可以通过这种方式捕捉错误。

10-08 08:05