サーバーにAPIを投げて結果をJSONで受け取って処理するプログラムを作っています。
以下がその該当コードになります。
Swift
1 let response = runQuery(_login_url) 2 let responseJson = JSON(response) 3 print (responseJson) 4 if (responseJson["status"].string == "success") { 5 loginStatus = 1 6 } 7 else { 8 loginStatus = 0 9 } 10 print(loginStatus) 11
上記プログラムを走らせると、loginStatusが0になります。
print(responseJson)の結果は、以下のように表示されています。
{"status": "success", "userid": "12345678", "username": "aaaaaaaa", "email": "bbbbbb@cccccccc.com", "session_string": "xxxxxxxxxxxxxxxx"}
しかし、responseJson["status"]の値が取れず、
print (responseJson["status"].string)とすると、nilが返ってきてしまいます。
取得したJSONデータを正しく取り出す方法につきましてアドバイスをいただけないでしょうか?
よろしくお願いいたします。
追記)
runQuery()は、以下のように書いています。
Swift
1 private func runQuery(_ _url: String) -> JSON { 2 var responseData: JSON = JSON.null 3 let urlString = _url 4 var keepAlive = true 5 6 Alamofire.request(urlString, method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON(completionHandler: { response in 7 8 responseData = JSON(response.result.value) 9 keepAlive = false 10 }) 11 12 let runLoop = RunLoop.current 13 while keepAlive && 14 runLoop.run(mode: RunLoopMode.defaultRunLoopMode, before: Date(timeIntervalSinceNow: 0.1)) { 15 } 16 17 return responseData 18 } 19
追記2)
print(responseJson)の結果
{"status": "success", "userid": "12345678", "username": "aaaaaaaa", "email": "bbbb@cccccccc.com", "session_string": "dddddddddddddddd"}
print(responseJson.rawValue)の結果
{"status": "success", "userid": "12345678", "username": "aaaaaaaa", "email": "bbbb@cccccccc.com", "session_string": "dddddddddddddddd"}
全く一緒でした。
また、response["status"].stringValue == "success" とstringの代わりにstringValueを試してみましたがダメでした。
どこが悪いのかさっぱりわかりません。引き続きよろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー