需要JSON解析帮助吗

需要JSON解析帮助吗,json,swift,url,weather,Json,Swift,Url,Weather,我是一个编程和Swift的初学者。我的应用程序应该具备的功能之一是纽约市当前温度的标签。问题是我不知道我的代码是否在正确的路径上。我尝试了很多视频和文章中的东西,但似乎没有任何效果。我相信答案很简单。谢谢你的帮助! 我使用黑暗的api。这是我当前的代码 import UIKit struct MyGitHub: Codable { let temperature: Int private enum CodingKeys: String, CodingKey { cas

我是一个编程和Swift的初学者。我的应用程序应该具备的功能之一是纽约市当前温度的标签。问题是我不知道我的代码是否在正确的路径上。我尝试了很多视频和文章中的东西,但似乎没有任何效果。我相信答案很简单。谢谢你的帮助! 我使用黑暗的api。这是我当前的代码

import UIKit

struct MyGitHub: Codable {
let temperature: Int

    private enum CodingKeys: String, CodingKey {
        case temperature
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        guard let gitUrl = URL(string: "here is my darksky api") else { return }
        URLSession.shared.dataTask(with: gitUrl) { (data, response, error) in
            guard let data = data else { return }
            do {
                let decoder = JSONDecoder()
                let gitData = try decoder.decode(MyGitHub.self, from: data)
                print (gitData.temperature)

            } catch let err {
                print ("Err", err)
            }

        } .resume()    
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }        
}
你可以试试这个

Alamofire.request(urlStr, method: .get, parameters:nil, encoding: JSONEncoding.default).responseJSON { response in

    if  let json = response.result.value as? [String:Any] {

        if let  main = json["currently"] as? [String:Any] {

            if let temp = main["temperature"] as? NSNumber
            {
               // set lbl here

                print(temp)
            }
       }
   }
}


根对象需要一个伞形结构,关键点温度的值是Double,而不是Int

如果您也发布JSON响应,答案可能非常简单。
struct Currently : Codable {

    var currently:InnerItem
}

struct InnerItem : Codable {

    var temperature:Double
}
guard let gitUrl = URL(string:urlStr) else { return }
URLSession.shared.dataTask(with: gitUrl) { (data, response, error) in
    guard let data = data else { return }
    do {
        let decoder = JSONDecoder()
        let gitData = try decoder.decode(Currently.self, from: data)
        print ("sdhjsdjhjhdshjshjsjhddhsj" , gitData.currently.temperature)

    } catch let err {
        print ("Err", err)

    }


    } .resume()
struct Root: Decodable {
    let currently : MyGitHub
}

struct MyGitHub: Decodable {
    let temperature: Double
}

...


let gitData = try decoder.decode(Root.self, from: data)
print(gitData.currently.temperature)