无法使用 SwiftyJSON 获取参数中的字符串值

Not able to get the stringValue in arguments with SwiftyJSON

{
  "StatusResponse": 
  {
     "StatusCode": "000"
     "StatusDescription": "Operation Success(000)"
     "DebugDescription": "OperationSuccess"
  }-
"memId": "3e369fec-a9c5-418b-a950-0647f7e15d7c"
"token": null
"isAdmin": false
"isTeacher": false
"isParent": true
"kinderId": null
}

这是我的JSON格式

Alamofire.request(.GET, "myURL").responseJSON { response in
            switch response.result {
            case .Success(let data):
                let json = JSON(data)
                let memId = json["memId"].stringValue
                for result in json["StatusResponse"].arrayValue
                {
                    let code = result["StatusCode"].stringValue
                    print("code = \(code)")
                }
                print("memId : \(memId)")
            case .Failure(let error):
                print("Request failed with error: \(error)")
            }
        }

我的代码和其他代码中有一个 StatusResponse 参数,但是,我可以获得 memId 字符串值,我的代码有什么问题为什么我无法在此处获取 StatusCode?

看起来 StatusResponse 在那个 JSON 示例中是一个字典,而不是一个数组。

编辑:我的 Swift 现在有点生疏了,但大致应该是这样的:

Alamofire.request(.GET, "myURL").responseJSON { response in
        switch response.result {
        case .Success(let data):
            let json = JSON(data)
            let memId = json["memId"].stringValue
            if let statusResponse = json["StatusResponse"] as? NSDictionary 
            {
                let code = statusResponse["StatusCode"].stringValue
                print("code = \(code)")
            }
            print("memId : \(memId)")
        case .Failure(let error):
            print("Request failed with error: \(error)")
        }
    }

StatusResponse 是字典而不是 arrayValue,试试这个:

let code = json["StatusResponse"]["StatusCode"].stringValue

我对 JSON 格式有点困惑。第三个括号后的“-”是什么?

如果JSON是这样的:

{
  "StatusResponse": 
  {
     "StatusCode": "000"
     "StatusDescription": "Operation Success(000)"
     "DebugDescription": "OperationSuccess"
  },
"memId": "3e369fec-a9c5-418b-a950-0647f7e15d7c",
"token": null,
"isAdmin": false,
"isTeacher": false,
"isParent": true,
"kinderId": null
}

那么 memId 不是 StatusResponse 对象的端口,因此您应该先通过展开它来获取值(因为它可以为 null)。

guard let memId = json["memId"] as? String else {
    // manage case memId == null
}

print("My memId: \(memId)")

希望对您有所帮助!