我如何解析这样的JSON?我需要得到“临时”的价值。
(https://i.stack.imgur.com/fqJqH.png)
我的尝试:
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"..。请帮帮忙。
发布于 2022-11-28 03:45:41
你的数据模型是错的。list不是Zero类型的,而是Zero类型的数组。同时,包含Main类型的var被命名为错误。
请考虑阅读文档。此外,如果出现任何错误,使用try和适当的do/catch块而不是try?可以提供更多的洞察力。
它应改为:
struct Forecast: Decodable {
var list: [Zero]
}
struct Zero: Decodable {
var main: Main
}
struct Main: Decodable {
var temp: Double = 0
}https://stackoverflow.com/questions/74595342
复制相似问题