下記コードで、ある情報提供サービスにapi接続しようとしています。
swift
1 let urlString = "https://..............." 2 let request = NSMutableURLRequest(url: URL(string: urlString)!) 3 let method = ".............." 4 let param = [............] 5 6 request.httpMethod = "POST" 7 request.addValue("application/json", forHTTPHeaderField: "Content-Type") 8 let params:[String:Any] = ["jsonrpc":"2.0","method":method,"params":param,"id":1] 9 10 do{ 11 request.httpBody = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) 12 let task:URLSessionDataTask = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {(data,response,error) -> Void in 13 14 let resultString = String(data: data!, encoding: .utf8)! 15 print("resultString:(resultString)") 16 17 let resultData: Data = resultString.data(using: String.Encoding.utf8)! 18 do { 19 let items = try JSONSerialization.jsonObject(with: resultData) as! Dictionary<String, Any> // ---- ① 20 print("items.result: (items["result"] as Any)") 21 22 if items["result"] != nil { // ---- ② 23 // do something ..... 24 } 25 26 } catch { 27 print(error) 28 } 29 }) 30 task.resume() 31 }catch{ 32 print("Error:(error)") 33 return 34 }
上記コードを実行すると
{"jsonrpc":"2.0","id":1,"result":null}
というjsonレスポンスが得られ、paramに該当するデータがあれば、そのデータが"result"の値としてjsonオブジェクトで返され、該当するデータがなければnullが返ってきます。
このjsonレスポンスを上記の方式(---- ①)でパースすると
Optional(<null>)
となります。この Optional(<null>)をnil判定して(---- ②)次の動作をさせたいと考えていますが、(---- ②)の方法ではnil判定してくれない様です。どの様な方法がよいのかご指導いただければありがたいです。
SWIFTはまだ日が浅く、Optionalについての理解も十分ではありません。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 04:36