URLSessionでJSON形式のデータを受信しようとしたのですが,
The data couldn’t be read because it isn’t in the correct format.
というエラーが出てしまい修正できないでいます。
データのフォーマットの形式が違うため読み込みすることができないらしいのですが、修正点が見つけられないでいます。
どなたかご教授お願いいたします。
ATSはinfo.plistから無効にしています。
Swift
1import UIKit 2import Foundation 3 4class ViewController: UIViewController { 5 6 struct FAQ: Codable { 7 var path: [String] 8 var type: [String] 9 var question: [String] 10 var choices: [String] 11 } 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 let urlSessionGetClient = URLSessionGetClient() 17 let queryItems = [URLQueryItem(name: "choice", value: "/")] 18 urlSessionGetClient.get(url: "http://172.17.240.25:8080/ta2/bot/select", queryItems: queryItems) 19 20 } 21 22 override func didReceiveMemoryWarning() { 23 super.didReceiveMemoryWarning() 24 25 } 26 27 class URLSessionGetClient { 28 29 func get(url urlString: String, queryItems: [URLQueryItem]? = nil) { 30 var compnents = URLComponents(string: urlString) 31 compnents?.queryItems = queryItems 32 let url = compnents?.url 33 let semaphore = DispatchSemaphore(value: 0) 34 let task = URLSession.shared.dataTask(with: url!) { 35 data, response, error in 36 if let jsonString = data { 37 let decoder: JSONDecoder = JSONDecoder() 38 do { 39 let faq: FAQ = try decoder.decode(FAQ.self, from: jsonString) 40 print(faq) 41 } catch { 42 print("error:", error.localizedDescription) 43 } 44 45 } else { 46 print(error ?? "Error") 47 } 48 semaphore.signal() 49 } 50 task.resume() 51 _ = semaphore.wait(timeout: DispatchTime.distantFuture) 52 } 53 } 54}
修正
JSONデータを消去しました。

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