无法使用 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)")
希望对您有所帮助!
{
"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)")
希望对您有所帮助!