如何使用URLSession从URL获取JSON数据?

我正在开发一个iOS应用程序,我必须从这个URL获取数据。

正如我所看到的,这个url包含JSON数据,所以我应该在这里解析或不解析它我不知道如何获取这个JSON数据。

这是我的代码。

import UIKit import SwiftyJSON typealias ServiceResponse = (ApiResponseData, NSError?) -> Void class ApiManager: NSObject { var session:URLSession? = nil var urlRequest:URLRequest? = nil override init(){ super.init() urlRequest = URLRequest(url: URL(string:"https://dl.dropboxusercontent.com/s/2iodh4vg0eortkl/facts.json")!) urlRequest?.addValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") session = URLSession(configuration: .default) } func callRestApiToFetchDetails(onCompletion: @escaping ServiceResponse) { let task = session?.dataTask(with: urlRequest!, completionHandler: {data, response, error -> Void in print("Response = \(data)") do { let jsonData = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! NSDictionary // Do Stuff print("\(jsonData)") } catch { // handle error print("Error in parsing - \(error)") } }) task?.resume() } } 

但我在解析时遇到错误。

在此处输入图像描述

您必须通过NSDictionary JSONSerialization转换后,Web服务响应是String.Encoding.ascii转换为String.Encoding.utf8

试试这个方法吧。

  let url = "https://dl.dropboxusercontent.com/s/2iodh4vg0eortkl/facts.json" URLSession.shared.dataTask(with: URL(string: url)!) { (data, res, err) in if let d = data { if let value = String(data: d, encoding: String.Encoding.ascii) { if let jsonData = value.data(using: String.Encoding.utf8) { do { let json = try JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any] if let arr = json["rows"] as? [[String: Any]] { debugPrint(arr) } } catch { NSLog("ERROR \(error.localizedDescription)") } } } } }.resume()