首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从openWeatherMap解析JSON

从openWeatherMap解析JSON
EN

Stack Overflow用户
提问于 2022-11-28 02:20:14
回答 1查看 25关注 0票数 0

我如何解析这样的JSON?我需要得到“临时”的价值。

(https://i.stack.imgur.com/fqJqH.png)

我的尝试:

代码语言:javascript
复制
struct Forecast: Decodable {
    var list: Zero
}

struct Zero: Decodable {
    var zero: Main
}

struct Main: Decodable {
    var temp: Double = 0
}


enum CodingKeys: String, CodingKey {
    case zero = "0"
}



func getForecasts(lat: Double, lon: Double) async throws -> Forecast {
        let api = getForecast.shared.forecast(lat: lat, lon: lon)
        guard let apiURL = URL(string: api) else { throw Errors.badUrl }
        let (data, response) = try await URLSession.shared.data(from: apiURL)
        guard (response as! HTTPURLResponse).statusCode == 200 else { throw Errors.badResponse }
        let decoder = JSONDecoder()
        decoder.keyDecodingStrategy = .convertFromSnakeCase
        guard let object = try? decoder.decode(Forecast.self, from: data) else { throw Errors.errorDecoding }
        
        
        return object
}

以上代码抛出"errorDecodig"..。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2022-11-28 03:45:41

你的数据模型是错的。list不是Zero类型的,而是Zero类型的数组。同时,包含Main类型的var被命名为错误。

请考虑阅读文档。此外,如果出现任何错误,使用try和适当的do/catch块而不是try?可以提供更多的洞察力。

它应改为:

代码语言:javascript
复制
struct Forecast: Decodable {
    var list: [Zero]
}

struct Zero: Decodable {
    var main: Main
}

struct Main: Decodable {
    var temp: Double = 0
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74595342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档