Swift中的JSON解码问题

Swift中的JSON解码问题,json,swift,Json,Swift,我试图使用openweathermap.org api返回JSON中的“main”键。由于某种原因,我一直被“无法转换”的错误所困扰。我不太清楚为什么我不能转换JSON,有人有什么想法吗?多谢各位 override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white let url = "https://api.openweathe

我试图使用openweathermap.org api返回JSON中的“main”键。由于某种原因,我一直被“无法转换”的错误所困扰。我不太清楚为什么我不能转换JSON,有人有什么想法吗?多谢各位

override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        
        let url = "https://api.openweathermap.org/data/2.5/weather?zip=10514&appid=#####################"
        getData(from: url)
    }
struct Response: Codable {
        let weather: MyResult
    }
struct MyResult: Codable {
        let main: String
    }
下面是调用以更改JSON访问权限的函数

private func getData(from url:String) {
        URLSession.shared.dataTask(with: URL(string:url)!, completionHandler: {
            data, response, error in
            guard let data = data, error == nil else {
                print("Something went wrong")
                return
            }
            // have data
            
            var result: Response?
            do {
                result = try JSONDecoder().decode(Response.self, from: data)
            } catch {
                print("failed to convert")
            }
            guard let json = result else {
                return
            }
            print(json.weather.main)
            }).resume()
    }
编辑:这就是json的作用。我是否创建的结构不正确?如果是这样的话,我应该如何正确地做呢?多谢各位

{"coord":{"lon":-73.73,"lat":41.2},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"base":"stations","main":{"temp":291.67,"feels_like":288.73,"temp_min":290.93,"temp_max":292.59,"pressure":1024,"humidity":72},"visibility":10000,"wind":{"speed":5.7,"deg":130},"clouds":{"all":40},"dt":1594956028,"sys":{"type":1,"id":4403,"country":"US","sunrise":1594892168,"sunset":1594945530},"timezone":-14400,"id":0,"name":"Mount Kisco","cod":200}

在JSON响应中,属性
weather
是一个数组:

{..., weather: [{...}] }
但在您的模型中,它需要一个
MyResult
类型。将其更改为需要一个
[MyResult]
数组:

struct Response: Codable {
   let weather: [MyResult]
}

检查您的响应模型并与json进行比较response@luffy_064我添加了JSON示例。我是否创建的结构不正确?如果是这样,你能告诉我如何正确地创建它们吗?谢谢你